mod craft;
mod detector;
mod group;
mod postprocess;
mod preprocess;
#[allow(unused_imports)]
pub(crate) use detector::{CraftDetector, DetectedRegion, DetectedRegions, DetectorInput, TextDetector};
#[cfg(feature = "bench")]
pub(crate) fn bench_preprocess(
image: &crate::types::Image,
canvas_size: u32,
mag_ratio: f32,
) -> crate::error::Result<crate::inference::Tensor> {
Ok(preprocess::prepare(image, canvas_size, mag_ratio)?.tensor)
}
#[cfg(feature = "bench")]
pub(crate) fn bench_preprocess_reference(
image: &crate::types::Image,
canvas_size: u32,
mag_ratio: f32,
) -> crate::error::Result<crate::inference::Tensor> {
Ok(preprocess::prepare_reference(image, canvas_size, mag_ratio)?.tensor)
}
#[cfg(feature = "bench")]
pub(crate) fn bench_postprocess(
region: &ndarray::Array2<f32>,
link: &ndarray::Array2<f32>,
text_threshold: f32,
link_threshold: f32,
low_text: f32,
inv_ratio: f32,
) -> crate::error::Result<Vec<[[f32; 2]; 4]>> {
let mut boxes = postprocess::get_det_boxes(region, link, text_threshold, link_threshold, low_text)?;
postprocess::adjust_coordinates(&mut boxes, inv_ratio);
Ok(boxes)
}
#[cfg(feature = "bench")]
pub(crate) fn bench_group(
boxes: &[[[f32; 2]; 4]],
config: &crate::config::DetectionConfig,
) -> (Vec<[f32; 4]>, Vec<[[f32; 2]; 4]>) {
let grouped = group::group_boxes(boxes, config);
(grouped.horizontal, grouped.free)
}