From 1362243f4e2e9c650478283a27cf294fea2dcec9 Mon Sep 17 00:00:00 2001 From: CNWei Date: Wed, 5 Aug 2026 20:12:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E5=85=AC=E5=BC=80=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E8=BF=87=E6=BB=A4=E4=B8=8E=E5=AD=97=E7=AC=A6=E9=9B=86?= =?UTF-8?q?=E9=99=90=E5=88=B6=E6=89=A9=E5=B1=95=20API=20=E5=B9=B6=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=AE=8F=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ddddocr-core/src/det/builder.rs | 3 ++- ddddocr-core/src/det/executor.rs | 4 +--- ddddocr-core/src/lib.rs | 15 +++++++++------ ddddocr-core/src/ocr.rs | 3 ++- ddddocr-core/src/ocr/builder.rs | 5 ++--- ddddocr-core/src/ocr/executor.rs | 3 ++- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/ddddocr-core/src/det/builder.rs b/ddddocr-core/src/det/builder.rs index 3df77b6..45f5bfe 100644 --- a/ddddocr-core/src/det/builder.rs +++ b/ddddocr-core/src/det/builder.rs @@ -9,7 +9,8 @@ use crate::traits::DetEngine; pub struct DetBuilder; impl DetBuilder { - fn build_with(self, runtime: &E) -> Detector<'_> { + /// 绑定检测引擎会话并构建 Detector。 + pub fn build_with(self, runtime: &E) -> Detector<'_> { Detector { runtime } } } diff --git a/ddddocr-core/src/det/executor.rs b/ddddocr-core/src/det/executor.rs index 5ebe73c..d4bbf93 100644 --- a/ddddocr-core/src/det/executor.rs +++ b/ddddocr-core/src/det/executor.rs @@ -4,11 +4,9 @@ use crate::error::{Result, TensorError}; use image::{DynamicImage, GenericImageView, imageops::FilterType}; use ndarray::{Array2, Array3, Array4, Axis, prelude::*, s}; use std::fmt; -// use tract_onnx::prelude::{Tensor}; -// use ddddocr_tract::det::session::DetSession; -use crate::{DetBuilder, DetOutput, OcrBuilder}; use crate::traits::DetEngine; +use crate::{DetBuilder, DetOutput}; /// 目标检测结果:原图像素坐标系下的边界框、置信度与类别 ID。 #[derive(Debug, Clone, Copy)] diff --git a/ddddocr-core/src/lib.rs b/ddddocr-core/src/lib.rs index ba5a5e0..136266b 100644 --- a/ddddocr-core/src/lib.rs +++ b/ddddocr-core/src/lib.rs @@ -11,15 +11,19 @@ mod det; pub mod error; mod ocr; mod slide; -/// 图像加载、转换与处理工具。 -pub mod utils; -/// 模型输入输出信息等共享类型。 -pub mod types; /// 推理引擎统一抽象接口。 pub mod traits; +/// 模型输入输出信息等共享类型。 +pub mod types; +/// 图像加载、转换与处理工具。 +pub mod utils; pub use crate::det::{DetBuilder, DetectionResult, Detector}; -pub use crate::ocr::{Charset, ModelMetadata, Normalization, Ocr, OcrBuilder, OcrResult, Resize}; +pub use crate::ocr::{ + CharRestrict, Charset, ColorFilter, ColorPreset, HsvRange, IdRestrict, ModelMetadata, + MultiOrColorRestrict, MultiOrRestrict, Normalization, Ocr, OcrBuilder, OcrResult, PixelCtx, + Resize, TokenFilter, ValidationCtx, +}; pub use crate::slide::{SlideResult, Slider}; /// OCR 模型的统一输出枚举,由推理引擎产出,供 [`Ocr`] 后处理。 @@ -32,4 +36,3 @@ pub enum OcrOutput { pub enum DetOutput { Detection(ndarray::Array3), } - diff --git a/ddddocr-core/src/ocr.rs b/ddddocr-core/src/ocr.rs index ccb0454..54cf476 100644 --- a/ddddocr-core/src/ocr.rs +++ b/ddddocr-core/src/ocr.rs @@ -9,6 +9,7 @@ mod token_filter; pub use builder::OcrBuilder; pub use charset::Charset; +pub use color_filter::{ColorFilter, ColorPreset, HsvRange, MultiOrColorRestrict, PixelCtx}; pub use executor::{Ocr, OcrResult}; pub use metadata::{ModelMetadata, Normalization, Resize}; -pub use token_filter::TokenFilter; +pub use token_filter::{CharRestrict, IdRestrict, MultiOrRestrict, TokenFilter, ValidationCtx}; diff --git a/ddddocr-core/src/ocr/builder.rs b/ddddocr-core/src/ocr/builder.rs index 50a55d9..b1df876 100644 --- a/ddddocr-core/src/ocr/builder.rs +++ b/ddddocr-core/src/ocr/builder.rs @@ -1,10 +1,9 @@ //! OCR 构建器。 -use crate::ocr::executor::Ocr; -// use ddddocr_tract::session::OcrSession; -use crate::traits::OcrEngine; use crate::ocr::color_filter::ColorFilter; +use crate::ocr::executor::Ocr; use crate::ocr::token_filter::TokenFilter; +use crate::traits::OcrEngine; /// OCR 构建器:配置识别选项后绑定引擎会话构建 [`crate::Ocr`]。 #[derive(Default)] diff --git a/ddddocr-core/src/ocr/executor.rs b/ddddocr-core/src/ocr/executor.rs index cd46d91..1f62c10 100644 --- a/ddddocr-core/src/ocr/executor.rs +++ b/ddddocr-core/src/ocr/executor.rs @@ -308,7 +308,8 @@ impl<'a> Ocr<'a> { } } impl<'a> Ocr<'a> { - fn is_valid_indices(&self, idx: usize) -> bool { + /// 判断索引是否为当前限制下的有效字符索引。 + pub fn is_valid_indices(&self, idx: usize) -> bool { if idx >= self.runtime.metadata().charset.size() { return false; }