How hyacinthe-primus/scanlayer works
scanlayer converts scanned images or photographed documents into searchable PDFs or raw OCR exports. Users enter through the CLI or Python API; the shared conversion engine validates and preprocesses pages, extracts and reorders OCR words, then writes the selected output. Batch conversion, merging, native-PDF input, configuration, dry-run checks, and debug overlays are also documented capabilities. The graph follows the sampled orchestration and SOURCE INDEX references; unsampled implementation details are represented only where the README documents them.
Main entry points: main.py Conversion API · run.py CLI commands · builder.py Searchable PDF · config.py Runtime configuration
Components 18
User interfaces
- CLI commands
scanlayer/cli/run.py - Argument parser
scanlayer/cli/parser.py - Dry-run checks
scanlayer/cli/dry_run.py
Conversion pipeline
- Conversion API
scanlayer/main.py - Image enhancement
scanlayer/preprocessing/enhance.py - OCR engine
scanlayer/ocr/engine.py - Column ordering
scanlayer/layout/columns.py
Output generation
- Raw OCR export
scanlayer/ocr/export.py - Searchable PDF
scanlayer/pdf/builder.py - PDF fonts
scanlayer/pdf/fonts.py - Debug overlay
scanlayer/utils/debug_image.py
Configuration and diagnostics
- Input validation
scanlayer/utils/validators.py - Runtime configuration
scanlayer/config.py - Logging and timing
scanlayer/utils/logger.py
Other components
- CLI user
- Python caller
- Tesseract OCR
- PDF or OCR files
Connections 22
- CLI user → CLI commands: runs
README.md - CLI commands → Argument parser: parses arguments
scanlayer/cli/run.py - CLI commands → Runtime configuration: applies settings
scanlayer/cli/run.py - CLI commands → Dry-run checks: dispatches checks
scanlayer/cli/run.py - CLI commands → Conversion API: starts conversion
scanlayer/cli/run.py - Python caller → Conversion API: calls
README.md - Dry-run checks → Input validation: validates inputs
scanlayer/cli/dry_run.py - Conversion API → Input validation: checks prerequisites
scanlayer/main.py - Conversion API → Image enhancement: preprocesses pages
scanlayer/main.py - Image enhancement → Tesseract OCR: checks orientation
scanlayer/preprocessing/enhance.py - Conversion API → OCR engine: extracts words
scanlayer/main.py - OCR engine → Tesseract OCR: runs OCR
README.md - Conversion API → Column ordering: orders words
scanlayer/main.py - Conversion API → Raw OCR export: exports OCR data
scanlayer/main.py - Conversion API → Searchable PDF: builds PDF
scanlayer/main.py - Searchable PDF → PDF fonts: uses fonts
scanlayer/pdf/builder.py - Conversion API → Debug overlay: writes overlay
scanlayer/main.py - Conversion API → Runtime configuration: reads options
scanlayer/main.py - Conversion API → PDF or OCR files: writes output
README.md - Raw OCR export → PDF or OCR files: writes export
README.md - Searchable PDF → PDF or OCR files: writes PDF
scanlayer/pdf/builder.py - Runtime configuration → Logging and timing: configures logging
scanlayer/config.py