pub mod det; pub mod error; pub mod ocr; mod slide; pub mod utils; use crate::error::Result; pub use crate::slide::{SlideResult, Slider}; pub use crate::det::{DetBuilder, DetectionResult, Detector}; pub use crate::ocr::{Ocr, OcrBuilder, OcrResult}; pub use ocr::metadata::ModelMetadata; // DetSession pub enum OcrOutput { Indices(ndarray::Array1), // 拥有完整所有权的 1维数组,可任意传递和返回 Logits(ndarray::Array2), } /// 2. 目标检测专属的、编译期安全的输出枚举 pub enum DetOutput { Detection(ndarray::Array3), // 拥有完整所有权的 2维矩阵,可任意传递和返回 } /// 核心层定义的统一推理引擎接口。 /// 未来的 ddddocr-tract 和 ddddocr-ort 都必须实现这个 Trait pub trait InferenceEngine { /// 关联类型:具体的 Session 需要声明自己到底产出什么枚举 type Output; fn inference(&self, input_array: ndarray::Array4) -> Result; } pub trait OcrEngine: InferenceEngine { fn metadata(&self) -> &ModelMetadata; } pub trait DetEngine: InferenceEngine {}