A Python library that converts casual document snapshots into professional-quality scanned documents.
Project description
PhotoToScan
A Python library that converts casual document snapshots into professional-quality scanned documents.
This project makes use of the OpenCV-Document-Scanner from @andrewdcampbell and @joaofauvel, and the transform and imutils modules from @PyImageSearch (which can be accessed here).
Environment
uv - An extremely fast Python package and project manager, written in Rust.
Installation
pip install phototoscan
How To Use It
As a library
Examples
from phototoscan import Scanner, OutputFormat
scanner = Scanner()
# Basic usage with file path
result = scanner.scan(
image_input="path/to/image.jpg",
output_format=OutputFormat.PATH_STR,
output_dir="path/to/output" # optional
)
# Advanced usage with various input and output types
# 1. From file path to file path string
path_str = scanner.scan(
image_input="path/to/image.jpg",
output_format=OutputFormat.PATH_STR
)
# 2. From file path to Path object
path_obj = scanner.scan(
image_input="path/to/image.jpg",
output_format=OutputFormat.FILE_PATH
)
# 3. From numpy array to bytes
bytes_data = scanner.scan(
image_input=numpy_array,
output_format=OutputFormat.BYTES,
ext=".jpg" # required when input is numpy array and output is bytes
)
# 4. From bytes to numpy array
np_array = scanner.scan(
image_input=image_bytes,
output_format=OutputFormat.NP_ARRAY
)
Parameters:
image_input: Can be a file path (str/Path), bytes/bytearray, or numpy arrayoutput_format: Determines the return type (OutputFormat.PATH_STR, OutputFormat.FILE_PATH, OutputFormat.BYTES, or OutputFormat.NP_ARRAY)output_dir: Optional. Directory to save the output (required for file outputs when input is numpy array)output_filename: Optional. Name for the output file (required for file outputs when input isn't a file path)ext: Optional. File extension for output (required for bytes output when input is numpy array)
Notes:
- When providing a file path as input and not specifying an output directory, a folder named "output" will be created at the same level as the input image.
- Any specified output directory that doesn't exist will be created automatically.
As a command-line tool
To scan a single image:
uvx phototoscan --image <IMG_PATH> --output-dir <OUTPUT_DIR>
-
--output-dir is optional.
-
If not provided, a directory named output will be created next to the image file.
-
If the specified directory does not exist, it will be created automatically.
Scan all images in a directory
uvx phototoscan --images <IMG_DIR> --output-dir <OUTPUT_DIR>
- The same rules apply for --output-dir as above.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phototoscan-0.1.1.tar.gz.
File metadata
- Download URL: phototoscan-0.1.1.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34697bae7442896723deb6eb524cd0c2c4d3e6c2a95e2f068cb85c05e566ca00
|
|
| MD5 |
0344756489a047ab2ce1e25688d3785a
|
|
| BLAKE2b-256 |
0bfd3b58d2c623669bbc89f542abbd355a0c0f65fe014d04b39a5f0976dcb005
|
File details
Details for the file phototoscan-0.1.1-py3-none-any.whl.
File metadata
- Download URL: phototoscan-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
777ddaa1f47ede40db73777fd50b5f566f78e7853ef0effc5481666e0bcb8ccc
|
|
| MD5 |
8272b53a0ec1f0750891122bd5b0e1ea
|
|
| BLAKE2b-256 |
c771ea6a53cbb28db454f81bb8e33f960c29112f5c2044bf0eca35c3141a76df
|