refactor(core): 提炼公共类型
- 将 AxisDim、TensorInfo 等公共类型下沉至 ddddocr_core::types - 项目结构优化
This commit is contained in:
@@ -1,24 +1,24 @@
|
||||
use crate::types::Session;
|
||||
use ddddocr_core::DetOutput;
|
||||
use ddddocr_core::error::{Result, TensorError};
|
||||
use ddddocr_core::{DetEngine, DetOutput, InferenceEngine};
|
||||
use ddddocr_core::traits::{DetEngine, InferenceEngine};
|
||||
use ndarray::Ix3;
|
||||
use ort::inputs;
|
||||
use ort::value::TensorRef;
|
||||
// use tract_onnx::prelude::{tvec, IntoTensor, Tensor};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct DetSession {
|
||||
pub struct DetRuntime {
|
||||
pub session: Session,
|
||||
}
|
||||
|
||||
impl DetSession {
|
||||
impl DetRuntime {
|
||||
pub fn new(session: Session) -> Self {
|
||||
Self { session }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
impl InferenceEngine for DetSession {
|
||||
impl InferenceEngine for DetRuntime {
|
||||
type Output = DetOutput; // 明确绑定 OCR 小枚举
|
||||
fn inference(&self, input_array: ndarray::Array4<f32>) -> Result<Self::Output, TensorError> {
|
||||
// tract 的 run 会返回一个 Vec<TValue>,我们通常只需要第一个输出
|
||||
@@ -28,7 +28,6 @@ impl InferenceEngine for DetSession {
|
||||
.lock()
|
||||
.map_err(|_| TensorError::Engine("获取 Session 锁失败 (Poisoned)".to_string()))?;
|
||||
|
||||
|
||||
let result = session_guard
|
||||
.run(inputs![TensorRef::from_array_view(&input_array).map_err(
|
||||
|e| TensorError::Engine(format!("构建输入失败: {e}"))
|
||||
@@ -45,8 +44,7 @@ impl InferenceEngine for DetSession {
|
||||
TensorError::Engine("Tract 实体张量无法转换为 ndarray::ArrayD".to_string())
|
||||
})?;
|
||||
// 提前利用克隆(Clone)备份好当前未转维度前的真实 shape (Vec<usize>)
|
||||
let shape_vec: Vec<usize> =
|
||||
shape_ref.to_vec().iter().map(|v| *v as usize).collect();
|
||||
let shape_vec: Vec<usize> = shape_ref.to_vec().iter().map(|v| *v as usize).collect();
|
||||
let shape_vec_slice = shape_vec.as_slice();
|
||||
|
||||
let view = ndarray::ArrayViewD::from_shape(shape_vec_slice, slice)
|
||||
@@ -64,4 +62,4 @@ impl InferenceEngine for DetSession {
|
||||
}
|
||||
}
|
||||
|
||||
impl DetEngine for DetSession {}
|
||||
impl DetEngine for DetRuntime {}
|
||||
|
||||
Reference in New Issue
Block a user