//! 推理引擎统一抽象接口。 use crate::error::TensorError; use crate::types::{ModelInfo, TensorInfo}; use crate::{DetOutput, ModelMetadata, OcrOutput}; use std::path::Path; /// 查询模型输入/输出信息的接口。 pub trait Info { fn input_info(&self) -> crate::error::Result>; fn output_info(&self) -> crate::error::Result>; fn model_info(&self) -> crate::error::Result; } /// 推理引擎统一抽象接口,由 ddddocr-tract、ddddocr-ort 等引擎 crate 实现。 pub trait InferenceEngine { /// 引擎产出的输出枚举(OCR 为 [`crate::OcrOutput`],检测为 [`crate::DetOutput`])。 type Output; fn inference( &self, input_array: ndarray::Array4, ) -> crate::error::Result; } /// OCR 引擎接口:输出 [`crate::OcrOutput`],并提供模型元数据。 pub trait OcrEngine: InferenceEngine + Info { fn metadata(&self) -> &ModelMetadata; } /// 目标检测引擎接口:输出 [`crate::DetOutput`]。 pub trait DetEngine: InferenceEngine {} /// 模型加载器:从本地路径或字节流构建引擎会话。 pub trait Loader { type Session; type Error; fn build_for_path>( &self, model_path: P, ) -> crate::error::Result; fn build_from_bytes( &self, model_bytes: &[u8], ) -> crate::error::Result; }