df-ocr-switcher 0.1.0

Document OCR pipeline in pure Rust: scanned PDF / multi-page TIFF / image → Markdown. PaddleOCR PP-OCRv6 and Tesseract 5.5 as interchangeable engines, PP-DocLayoutV3 layout for both.
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum Error {
    #[error("ppocr: {0}")]
    Ppocr(#[from] ppocr_rs::OcrError),

    #[error("image: {0}")]
    Image(#[from] image::ImageError),

    #[error("tiff: {0}")]
    Tiff(String),

    #[error("io: {0}")]
    Io(#[from] std::io::Error),

    #[error("modello non trovato: {0}")]
    ModelNotFound(String),

    #[error("{0}")]
    Other(String),
}

#[cfg(feature = "tesseract-engine")]
impl From<tesseract5_rs::TesseractError> for Error {
    fn from(e: tesseract5_rs::TesseractError) -> Self {
        Error::Other(format!("tesseract: {e}"))
    }
}

pub type Result<T> = std::result::Result<T, Error>;