PyAutoScan
A Python-based Windows scanning automation tool for printer/scanner devices using WIA.
PyAutoScan simplifies the process of scanning documents with HP and other printer devices that support WIA (Windows Image Acquisition). It provides:
- One-click auto-scan with customizable quality (low/medium/high)
- Image-to-PDF conversion for multi-page documents
- Configurable settings via scan_config.ini (resolution, color mode, auto-crop, deskew, output folder, etc.)
- Automatic file naming with timestamps
- Scanner info extraction (model, driver properties, max resolution, supported features)
- Optional auto-crop & deskew for cleaner scans
Works with HP and other multi-function printer devices (MFP) that expose their scanner through WIA.
🚀 Quick Start
# Clone the repository
git clone https://github.com/Pandiyarajk/pyautoscan.git
cd pyautoscan
# Install dependencies
pip install -r requirements.txt
# Test scanner connection
python scanner_info.py
# Start scanning
python basic_scan.py
🚀 Features
- Basic Scanning: Simple, fast scanning with configurable quality and format options
- Advanced Scanning: Enhanced scanning with auto-crop and deskew capabilities
- Multiple Formats: Support for JPG, PNG, TIFF, and PDF output
- Quality Control: Configurable DPI settings (150, 300, 600)
- Scanner Detection: Automatic scanner detection and information display
- Configuration Management: INI-based configuration for easy customization
- PDF Conversion: Convert multiple images to single PDF documents
- Windows Integration: Native Windows WIA (Windows Image Acquisition) support
📋 Requirements
- Windows 10/11
- Python 3.7+ (Tested on Python 3.13)
- Compatible scanner with WIA drivers (Tested on HP Printer scanner features)
- Required Python packages (see
requirements.txt)
📋 Dependencies
- pywin32: Windows COM integration for WIA
- Pillow: Image processing and PDF creation
- powerlogger: Enhanced logging with Rich console output and file rotation
🛠️ Installation
Option 1: Clone from GitHub
-
Clone the repository:
git clone https://github.com/Pandiyarajk/pyautoscan.git cd pyautoscan
-
Install dependencies:
pip install -r requirements.txt
-
Verify scanner connection:
python scanner_info.py
Option 2: Install via pip (when published to PyPI)
pip install pyautoscan
Option 3: Download Release
Download the latest release from GitHub Releases for pre-built Windows executables.
📖 Usage
Basic Scanning
python basic_scan.py
Advanced Scanning
python advanced_scan.py
Scanner Information
python scanner_info.py
Configuration
Edit scan_config.ini to customize:
- Output directory
- File format preferences
- Quality settings
- Auto-processing options
🔧 Configuration
The scan_config.ini file allows you to customize:
[SCAN]
output_dir = Scans
file_format = jpg
quality = medium
auto_crop = true
deskew = true
color_mode = 1
combine_pdf = false
Quality Settings
- Low: 150 DPI (fast, smaller files)
- Medium: 300 DPI (balanced)
- High: 600 DPI (high quality, larger files)
Supported Formats
- JPG: Compressed, good for documents
- PNG: Lossless, good for images
- TIFF: High quality, large files
- PDF: Portable document format
📁 Project Structure
pyautoscan/
├── basic_scan.py # Basic scanning functionality
├── advanced_scan.py # Advanced scanning with auto-processing
├── scanner_info.py # Scanner detection and information
├── scan_config.ini # Configuration file
├── requirements.txt # Python dependencies
├── setup.py # PyPI distribution setup
├── README.md # This file
├── CHANGELOG.md # Version history
├── TESTING.md # Testing documentation and results
├── LICENSE # MIT License
├── .github/workflows/ # GitHub Actions CI/CD
├── .gitignore # Git ignore file
├── run_scanner.bat # Windows batch launcher
└── Scans/ # Output directory for scanned files
🔧 Development
Repository
- GitHub: https://github.com/Pandiyarajk/pyautoscan
- Issues: https://github.com/Pandiyarajk/pyautoscan/issues
- Releases: https://github.com/Pandiyarajk/pyautoscan/releases
Build Status
The project uses GitHub Actions for continuous integration:
- Build: Windows executables for Python 3.8-3.13
- Test: Automated testing on Windows with Python 3.13
- Release: Automatic builds on releases
🚀 Building Executables
Using PyInstaller
# Install PyInstaller
pip install pyinstaller
# Build basic scanner
pyinstaller --onefile --windowed basic_scan.py
# Build advanced scanner
pyinstaller --onefile --windowed advanced_scan.py
Note: Successfully tested with Python 3.13 and HP Printer scanner features.
Using GitHub Actions
The repository includes a GitHub Actions workflow that automatically builds Windows executables on each release.
🔍 Troubleshooting
Common Issues
-
"No scanner detected"
- Ensure scanner is connected and powered on
- Verify WIA drivers are installed
- Run
scanner_info.pyto test connection
-
Permission errors
- Run as administrator if needed
- Check Windows security settings
-
Format not supported
- Verify scanner supports requested format
- Check
scanner_info.pyoutput for supported formats
Scanner Compatibility
This tool works with any scanner that supports Windows WIA (Windows Image Acquisition). Most modern scanners are compatible.
Tested Hardware:
- HP Printer scanner features (confirmed working)
- Windows WIA drivers
- Python 3.13 compatibility verified
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Repository: https://github.com/Pandiyarajk/pyautoscan
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
👨💻 Author
Pandiyaraj Karuppasamy
Email: pandiyarajk@live.com
Date: 27-Aug-2025
🙏 Acknowledgments
- Windows WIA (Windows Image Acquisition) API
- Python Imaging Library (PIL/Pillow)
- pywin32 for Windows COM integration
- PowerLogger for enhanced logging capabilities
📞 Support
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check the troubleshooting section above
- Verify your scanner compatibility
Note: This tool is designed specifically for Windows systems and requires a compatible scanner with WIA drivers.
Metadata
Release files for pyautoscan 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pyautoscan-1.0.0.tar.gz | 20.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyautoscan-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.1 kB
Release files / pyautoscan-1.0.0.tar.gz
| Download URL | pyautoscan-1.0.0.tar.gz |
|---|---|
| Size | 20.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1822a3ca0491056c03f8aab39bc94abce147f4ab94e81575dd7bc7738ab56a1
|
|
BLAKE2b-256 checksum How to use checksums |
26dd929660583cb4f2dd941851ba85d7f009f1221e20692fa64d241bdc85b45f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Release files / pyautoscan-1.0.0-py3-none-any.whl
| Download URL | pyautoscan-1.0.0-py3-none-any.whl |
|---|---|
| Size | 14.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1085ecc6cb30cf11a228bdf3d064c51289c171d87648e4088f8081ff5527f941
|
|
BLAKE2b-256 checksum How to use checksums |
b5e5c89b3fc04869cb6fc8052e4cbf81f93693e08a835b40d361d3354ff7ebd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Security for pyautoscan 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.