Skip to main content

Comprehensive document conversion library with batch processing, caching, and template rendering

Project description

Document Converter

Document Converter Logo

A comprehensive Python library for document conversion with batch processing, intelligent caching, and template rendering.

FeaturesInstallationQuick StartDocumentationContributing


✨ Features

🔄 Multi-Format Conversion

Convert between popular document formats:

  • PDF ↔ TXT, DOCX (with OCR support for scanned documents)
  • DOCX ↔ PDF, HTML, Markdown, TXT
  • HTML ↔ PDF, DOCX
  • Markdown ↔ HTML, PDF
  • ODT ↔ Multiple formats
  • TXT ↔ HTML, PDF

⚡ High Performance

  • Two-tier caching: In-memory LRU + persistent disk cache
  • Up to 138x speedup on repeated conversions
  • Parallel batch processing: 50-200 files/second
  • Streaming template rendering for memory efficiency

🛠️ Developer Friendly

  • Clean, extensible API
  • Comprehensive error handling with actionable suggestions
  • Transaction safety with automatic rollback
  • Full CLI with progress bars
  • 79% test coverage with 274+ tests

📦 Standalone Executable

  • Interactive mode: Double-click and use menu-driven interface
  • CLI mode: Full command-line support
  • No Python installation required for end users

📋 Requirements

  • Python 3.9+
  • See requirements.txt for dependencies

🚀 Installation

From Source

# Clone the repository
git clone https://github.com/MikeAMSDev/document-converter
cd document-converter

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows

# Install dependencies
pip install -r requirements.txt

Verify Installation

python -c "from converter.engine import ConversionEngine; print('✓ Installation successful!')"

🎯 Quick Start

Basic Conversion

from converter.engine import ConversionEngine
from converter.formats.pdf_converter import PDFConverter

# Setup
engine = ConversionEngine()
engine.register_converter('pdf', PDFConverter)

# Convert
engine.convert('document.pdf', 'document.txt')

Batch Processing

from converter.batch_processor import BatchProcessor

processor = BatchProcessor(max_workers=8)
processor.scan_directory('./documents', './output', from_format='docx', to_format='pdf')
report = processor.process_queue()

print(f"Converted {report.success} files")

With Caching (138x Faster!)

from converter.engine import ConversionEngine
from core.cache_manager import CacheManager

cache = CacheManager(cache_dir=".cache")
engine = ConversionEngine(cache_manager=cache)

# First conversion: normal speed
engine.convert('large.pdf', 'large.txt')

# Second conversion: instant (from cache)
engine.convert('large.pdf', 'large_copy.txt')

Template Rendering

from converter.template_engine import TemplateEngine

engine = TemplateEngine()
template = "Hello {{ name }}! {% for item in items %}{{ item }} {% endfor %}"
result = engine.render(template, {"name": "World", "items": ["A", "B", "C"]})

💻 CLI Usage

Single File Conversion

python -m cli.main convert input.pdf output.txt

Batch Processing

python -m cli.main batch ./documents ./output --from-format docx --to-format pdf --workers 8

Cache Management

# View cache stats
python -m cli.main cache-stats

# Clear cache
python -m cli.main cache-clear

Standalone Executable

Download document-converter.exe from the dist/ folder:

# Interactive mode (double-click or run without arguments)
document-converter.exe

# CLI mode
document-converter.exe convert input.pdf output.txt

📚 Documentation

Document Description
User Guide Step-by-step tutorials and common use cases
API Reference Complete API documentation
Developer Guide Contributing and extending the library
Examples Ready-to-run example scripts
Changelog Version history and changes

📁 Project Structure

document-converter/
├── converter/          # Core conversion logic
│   ├── engine.py       # Main conversion engine
│   ├── batch_processor.py
│   ├── template_engine.py
│   ├── formats/        # Format-specific converters
│   └── processors/     # OCR, images, styles
├── core/               # Core utilities
│   ├── cache_manager.py
│   ├── error_handler.py
│   ├── transaction.py
│   └── worker_pool.py
├── cli/                # Command-line interface
├── utils/              # Helper utilities
├── docs/               # Documentation
├── examples/           # Example scripts
├── tests/              # Test suite
└── dist/               # Standalone executable

🧪 Testing

# Run all tests
pytest

# With coverage
pytest --cov=converter --cov=core --cov-report=html

# Run specific test types
pytest -m unit
pytest -m integration

Current Coverage: 79% (274+ tests)


🤝 Contributing

Contributions are welcome! Please read our Developer Guide for:

  • Development setup
  • Code style guidelines
  • Testing requirements
  • How to add new format converters

Quick Start for Contributors

# Fork and clone
git clone https://github.com/MikeAMSDev/document-converter
cd document-converter

# Install dev dependencies
pip install -r requirements-dev.txt

# Create feature branch
git checkout -b feat/my-feature

# Make changes and test
pytest

# Submit pull request

📊 Performance Benchmarks

Operation Performance
Cache Speedup Up to 138x faster
Batch Throughput 50-200 files/sec
Memory Cache Lookup <1ms
Disk Cache Lookup <100ms
Template Rendering (100K items) <5 seconds

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

  • Built with Python 3.13
  • PDF processing: PyPDF2, ReportLab
  • DOCX handling: python-docx
  • OCR: Tesseract via pytesseract
  • CLI: Click

Made with ❤️ by MikeAMSDev

⭐ Star this repo if you find it useful!

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

document_converter-1.1.0.tar.gz (22.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

document_converter-1.1.0-py3-none-any.whl (69.3 kB view details)

Uploaded Python 3

File details

Details for the file document_converter-1.1.0.tar.gz.

File metadata

  • Download URL: document_converter-1.1.0.tar.gz
  • Upload date:
  • Size: 22.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for document_converter-1.1.0.tar.gz
Algorithm Hash digest
SHA256 09cb705635655f1f5ed36e762abc17d6238eba785fb77c28eff135d6245d4faa
MD5 31e400f4b86961b5ea15a00cc5d0f1bb
BLAKE2b-256 abeff0421943a0a3f5ef9a8194b424b30529fd36c0076b4b3668ce16ca3fd05e

See more details on using hashes here.

File details

Details for the file document_converter-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for document_converter-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e33bd7952f53e4ba6598fbe6e63645d683294fd1f836a8214776de506756ab9a
MD5 dec7f2a400c4b39bb91de31ae41f150e
BLAKE2b-256 e6e991f5f54aa0e33be628bf89976441826bca4c8927f4e498c84dfe4d11b060

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page