refactor: 优化 ModelLoader 结构与维度解析逻辑
- 提取 `resolve_tensors` 公共函数,消除输入输出流的重复代码。 - 简化 `resolve_shape`,使其回归纯粹的维度翻译职责,移除过早的错误校验。 - 统一错误处理,将底层解析异常清晰映射至 `DdddError::InternalError`。
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user