38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
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<i64>), // 拥有完整所有权的 1维数组,可任意传递和返回
|
||
Logits(ndarray::Array2<f32>),
|
||
}
|
||
/// 2. 目标检测专属的、编译期安全的输出枚举
|
||
pub enum DetOutput {
|
||
Detection(ndarray::Array3<f32>), // 拥有完整所有权的 2维矩阵,可任意传递和返回
|
||
}
|
||
|
||
/// 核心层定义的统一推理引擎接口。
|
||
/// 未来的 ddddocr-tract 和 ddddocr-ort 都必须实现这个 Trait
|
||
|
||
pub trait InferenceEngine {
|
||
/// 关联类型:具体的 Session 需要声明自己到底产出什么枚举
|
||
type Output;
|
||
fn inference(&self, input_array: ndarray::Array4<f32>) -> Result<Self::Output>;
|
||
}
|
||
|
||
pub trait OcrEngine: InferenceEngine<Output = OcrOutput> {
|
||
fn metadata(&self) -> &ModelMetadata;
|
||
}
|
||
|
||
pub trait DetEngine: InferenceEngine<Output = DetOutput> {}
|