ruvector-scipix 2.0.4

Rust OCR engine for scientific documents - extract LaTeX, MathML from math equations, research papers, and technical diagrams with ONNX GPU acceleration
Documentation
//! # Ruvector-Scipix
//!
//! A high-performance Rust implementation of Scipix OCR for mathematical expressions and equations.
//! Built on top of ruvector-core for efficient vector-based caching and similarity search.
//!
//! ## Features
//!
//! - **Mathematical OCR**: Extract LaTeX from images of equations
//! - **Vector Caching**: Intelligent caching using image embeddings
//! - **Multiple Formats**: Support for LaTeX, MathML, AsciiMath
//! - **High Performance**: Parallel processing and efficient caching
//! - **Configurable**: Extensive configuration options via TOML or API
//!
//! ## Quick Start
//!
//! ```rust,no_run
//! use ruvector_scipix::{Config, OcrEngine, Result};
//!
//! #[tokio::main]
//! async fn main() -> Result<()> {
//!     // Load configuration
//!     let config = Config::from_file("scipix.toml")?;
//!
//!     // Create OCR engine
//!     let engine = OcrEngine::new(config).await?;
//!
//!     // Process image
//!     let result = engine.process_image("equation.png").await?;
//!     println!("LaTeX: {}", result.latex);
//!
//!     Ok(())
//! }
//! ```
//!
//! ## Architecture
//!
//! - **config**: Configuration management with TOML support
//! - **error**: Comprehensive error types with context
//! - **math**: LaTeX and mathematical format handling
//! - **ocr**: Core OCR processing engine
//! - **output**: Output formatting and serialization
//! - **preprocess**: Image preprocessing pipeline
//! - **cache**: Vector-based intelligent caching

// Module declarations
pub mod api;
pub mod cli;
pub mod config;
pub mod error;

#[cfg(feature = "cache")]
pub mod cache;

#[cfg(feature = "ocr")]
pub mod ocr;

#[cfg(feature = "math")]
pub mod math;

#[cfg(feature = "preprocess")]
pub mod preprocess;

// Output module is always available
pub mod output;

// Performance optimizations
#[cfg(feature = "optimize")]
pub mod optimize;

// WebAssembly bindings
#[cfg(all(target_arch = "wasm32", feature = "wasm"))]
pub mod wasm;

// Public re-exports
pub use api::{state::AppState, ApiServer};
pub use cli::{Cli, Commands};
pub use config::{
    CacheConfig, Config, ModelConfig, OcrConfig, OutputConfig, PerformanceConfig, PreprocessConfig,
};
pub use error::{Result, ScipixError};

#[cfg(feature = "cache")]
pub use cache::CacheManager;

/// Library version
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

/// Default configuration preset
pub fn default_config() -> Config {
    Config::default()
}

/// High-accuracy configuration preset
pub fn high_accuracy_config() -> Config {
    Config::high_accuracy()
}

/// High-speed configuration preset
pub fn high_speed_config() -> Config {
    Config::high_speed()
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_version() {
        assert!(!VERSION.is_empty());
    }

    #[test]
    fn test_default_config() {
        let config = default_config();
        assert!(config.validate().is_ok());
    }

    #[test]
    fn test_high_accuracy_config() {
        let config = high_accuracy_config();
        assert!(config.validate().is_ok());
    }

    #[test]
    fn test_high_speed_config() {
        let config = high_speed_config();
        assert!(config.validate().is_ok());
    }
}