paddle_ocr_rs/
lib.rs

1pub mod angle_net;
2pub mod crnn_net;
3pub mod db_net;
4pub mod ocr_error;
5pub mod ocr_lite;
6pub mod ocr_result;
7pub mod ocr_utils;
8pub mod scale_param;
9
10#[cfg(test)]
11mod tests {
12    use crate::{ocr_error::OcrError, ocr_lite::OcrLite};
13
14    #[test]
15    fn run_test() -> Result<(), OcrError> {
16        let mut ocr = OcrLite::new();
17        ocr.init_models(
18            "./models/ch_PP-OCRv4_det_infer.onnx",
19            "./models/ch_ppocr_mobile_v2.0_cls_infer.onnx",
20            "./models/ch_PP-OCRv4_rec_infer.onnx",
21            "./models/ppocr_keys_v1.txt",
22            2,
23        )?;
24
25        println!("===test_1===");
26        let res =
27            ocr.detect_from_path("./docs/test_images/test_1.png", 50, 1024, 0.5, 0.3, 1.6, true, false)?;
28        res.text_blocks.iter().for_each(|item| {
29            println!("text: {} score: {}", item.text, item.text_score);
30        });
31        println!("===test_2===");
32        let res =
33            ocr.detect_from_path("./docs/test_images/test_2.png", 50, 1024, 0.5, 0.3, 1.6, true, false)?;
34        res.text_blocks.iter().for_each(|item| {
35            println!("text: {} score: {}", item.text, item.text_score);
36        });
37
38        // 通过 image 读取图片
39        println!("===test_3===");
40        let test_three_img = image::open("./docs/test_images/test_3.png").unwrap().to_rgb8();
41        let res = ocr.detect(&test_three_img, 50, 1024, 0.5, 0.3, 1.6, true, false)?;
42        res.text_blocks.iter().for_each(|item| {
43            println!("text: {} score: {}", item.text, item.text_score);
44        });
45
46        Ok(())
47    }
48}