Yaz Hobooti
Increase PDF resolution: DPI from 300 to 600, scaling factors improved for better OCR and barcode detection
e7a28e8
| #!/usr/bin/env python3 | |
| """ | |
| Startup script for PDF Comparison Tool | |
| """ | |
| import os | |
| import sys | |
| import subprocess | |
| import webbrowser | |
| import time | |
| from pathlib import Path | |
| def check_python_version(): | |
| """Check if Python version is compatible""" | |
| if sys.version_info < (3, 7): | |
| print("β Python 3.7 or higher is required") | |
| print(f"Current version: {sys.version}") | |
| return False | |
| print(f"β Python {sys.version.split()[0]} is compatible") | |
| return True | |
| def check_dependencies(): | |
| """Check if required dependencies are installed""" | |
| try: | |
| import flask | |
| import cv2 | |
| import numpy | |
| import PIL | |
| import pytesseract | |
| import pdf2image | |
| import pyzbar | |
| import spellchecker | |
| import nltk | |
| import skimage | |
| print("β All Python dependencies are installed") | |
| return True | |
| except ImportError as e: | |
| print(f"β Missing dependency: {e}") | |
| print("Please run: pip install -r requirements.txt") | |
| return False | |
| def check_tesseract(): | |
| """Check if Tesseract OCR is installed""" | |
| try: | |
| import pytesseract | |
| pytesseract.get_tesseract_version() | |
| print("β Tesseract OCR is available") | |
| return True | |
| except Exception as e: | |
| print(f"β Tesseract OCR not found: {e}") | |
| print("Please install Tesseract:") | |
| print(" macOS: brew install tesseract") | |
| print(" Ubuntu: sudo apt-get install tesseract-ocr") | |
| print(" Windows: Download from https://github.com/UB-Mannheim/tesseract/wiki") | |
| return False | |
| def create_directories(): | |
| """Create necessary directories""" | |
| directories = ['uploads', 'results', 'static/results'] | |
| for directory in directories: | |
| Path(directory).mkdir(parents=True, exist_ok=True) | |
| print("β Directories created") | |
| def start_application(): | |
| """Start the Flask application""" | |
| print("\nπ Starting PDF Comparison Tool...") | |
| print("π± The application will be available at: http://localhost:5000") | |
| print("βΉοΈ Press Ctrl+C to stop the application") | |
| print("-" * 50) | |
| try: | |
| # Start the Flask app | |
| from app import app | |
| app.run(debug=True, host='0.0.0.0', port=5000) | |
| except KeyboardInterrupt: | |
| print("\nπ Application stopped by user") | |
| except Exception as e: | |
| print(f"β Error starting application: {e}") | |
| return False | |
| return True | |
| def main(): | |
| """Main startup function""" | |
| print("=" * 50) | |
| print("π PDF Comparison Tool") | |
| print("=" * 50) | |
| # Check requirements | |
| if not check_python_version(): | |
| sys.exit(1) | |
| if not check_dependencies(): | |
| sys.exit(1) | |
| if not check_tesseract(): | |
| sys.exit(1) | |
| # Create directories | |
| create_directories() | |
| # Ask user if they want to open browser | |
| try: | |
| response = input("\nπ Open browser automatically? (y/n): ").lower().strip() | |
| if response in ['y', 'yes']: | |
| # Wait a moment for the server to start | |
| def open_browser(): | |
| time.sleep(2) | |
| webbrowser.open('http://localhost:5000') | |
| import threading | |
| browser_thread = threading.Thread(target=open_browser) | |
| browser_thread.daemon = True | |
| browser_thread.start() | |
| except KeyboardInterrupt: | |
| print("\nπ Setup cancelled by user") | |
| sys.exit(0) | |
| # Start the application | |
| start_application() | |
| if __name__ == "__main__": | |
| main() | |