mod backends;
#[cfg(any(feature = "ocr", all(feature = "pdf", feature = "layout-detection")))]
pub(crate) const OCR_PROCESSED_IMAGE_WIDTH_METADATA_KEY: &str = "ocr_processed_image_width";
#[cfg(any(feature = "ocr", all(feature = "pdf", feature = "layout-detection")))]
pub(crate) const OCR_PROCESSED_IMAGE_HEIGHT_METADATA_KEY: &str = "ocr_processed_image_height";
#[cfg(any(feature = "ocr", all(feature = "pdf", feature = "layout-detection")))]
pub(crate) const OCR_ORIENTATION_DEGREES_METADATA_KEY: &str = "orientation_degrees";
#[cfg(any(feature = "ocr", all(feature = "pdf", feature = "layout-detection")))]
pub(crate) const OCR_AUTO_ROTATED_METADATA_KEY: &str = "auto_rotated";
#[cfg(feature = "ocr")]
pub mod cache;
#[cfg(any(feature = "ocr", feature = "paddle-ocr"))]
pub mod conversion;
pub mod error;
#[cfg(feature = "ocr")]
pub mod hocr_parser;
pub mod language_registry;
#[cfg(all(
feature = "layout-detection",
feature = "pdf",
any(feature = "ocr", feature = "ocr-pipeline")
))]
pub mod layout_assembly;
#[cfg(feature = "ocr")]
pub mod processor;
#[cfg(feature = "ocr")]
pub mod table;
#[cfg(feature = "ocr")]
pub mod tessdata_download;
#[cfg(feature = "ocr")]
pub mod tessdata_manager;
#[cfg(feature = "ocr")]
pub mod tesseract_backend;
#[cfg(all(feature = "ocr-wasm", not(feature = "ocr")))]
pub mod tesseract_wasm_backend;
pub mod types;
#[cfg(feature = "ocr")]
pub mod utils;
#[cfg(feature = "ocr")]
pub mod validation;
#[cfg(feature = "ocr")]
pub use cache::{OcrCache, OcrCacheStats};
pub use error::OcrError;
pub use language_registry::LanguageRegistry;
#[cfg(feature = "ocr")]
pub use processor::OcrProcessor;
#[cfg(feature = "ocr")]
pub use tessdata_manager::TessdataManager;
#[cfg(feature = "ocr")]
pub use tesseract_backend::TesseractBackend;
#[cfg(all(feature = "ocr-wasm", not(feature = "ocr")))]
pub use tesseract_wasm_backend::TesseractWasmBackend;
pub use types::{BatchItemResult, ExtractionResult, PSMMode, Table, TesseractConfig};
#[cfg(feature = "ocr")]
pub use utils::compute_hash;