refactor: 优化 ModelLoader 结构与维度解析逻辑

- 提取 `resolve_tensors` 公共函数,消除输入输出流的重复代码。
- 简化 `resolve_shape`,使其回归纯粹的维度翻译职责,移除过早的错误校验。
- 统一错误处理,将底层解析异常清晰映射至 `DdddError::InternalError`。
This commit is contained in:
2026-07-14 18:56:41 +08:00
parent 4fd38022fd
commit cd70748393
3 changed files with 188 additions and 4 deletions

View File

@@ -4,9 +4,13 @@ use ddddocr_tract::{DetSession,OcrSession};
use image::{DynamicImage, Rgb};
use std::fs;
use std::path::Path;
use anyhow::Context;
use tract_onnx::prelude::{ShapeFact, TDim};
mod char_slice;
use char_slice::CHARSET_BETA;
use ddddocr_core::ocr::metadata::{Normalization, Resize};
use ddddocr_tract::loader::ModelLoader;
fn load_image<P: AsRef<Path>>(path: P) -> anyhow::Result<image::DynamicImage> {
// 1. 先将泛型转为具体的 &Path 引用
@@ -182,3 +186,10 @@ fn test_real_slide_comparison() {
assert_eq!(result.target_y, 90);
assert!(result.confidence > 0.0);
}
#[test]
fn test_resolve_shape_logic_direct() {
// 创建一个哑 ModelLoader 实例session 用不上,因为我们直接测私有方法)
let loader = ModelLoader::model_for_path("D:\\CNWei\\CNW\\Rust\\ddddocr-rs\\models\\common_sml2h3_f32.onnx",).expect("建立测试模型图失败");
let md_info=&loader.model_info().context("信息");
println!("md_info: {:?}",md_info);
}