Skip to main content

ppocr_rs/
lib.rs

1//! ppocr-rs — pipeline OCR PaddleOCR (PP-OCRv6) in puro Rust su
2//! ort 2.0.0-rc.9, downportato da meibel-ai/paddle-ocr-rs (Apache-2.0).
3//!
4//! ## Componenti
5//!
6//! - [`db_net`]      — DBNet text detection (input immagine, output bbox).
7//! - [`crnn_net`]    — CRNN/SVTR text recognition (input crop, output stringa).
8//! - [`angle_net`]   — Classificatore orientamento per-line (0°/180°).
9//! - [`layout`]      — PP-DocLayoutV3 layout analysis (NOSTRA aggiunta — non
10//!                     presente in paddle-ocr-rs upstream).
11//! - [`ocr_lite`]    — Pipeline orchestrator det → cls → rec.
12//! - [`ocr_utils`]   — Helper image preprocessing (mean/std normalize, perspective warp).
13//! - [`scale_param`] — Calcolo dimensioni resize-to-multiple-of-32.
14//! - [`ocr_result`]  — DTO: TextBox, TextLine, OcrResult.
15//! - [`ocr_error`]   — Error type unico via `thiserror`.
16//! - [`compat`]      — Shim per le differenze API ort rc.9 vs rc.11.
17//!
18//! ## Differenze rispetto a paddle-ocr-rs upstream
19//!
20//! 1. **`ort` pinnato a `=2.0.0-rc.9`** — versione target permanente del
21//!    workspace (rc.11+ si blocca su ARM64 Snapdragon X Elite).
22//! 2. **`ndarray` a `0.16`** (re-export di rc.9) invece di `0.17` (rc.11).
23//! 3. **API `try_extract_tensor`** convertita via [`compat`] (shim permanente).
24//! 4. **Modulo [`layout`]** aggiunto per supportare PP-DocLayoutV3 — non
25//!    presente in upstream.
26//! 5. **Edition `2021`** invece di `2024` (per compat con il toolchain
27//!    minimo del workspace).
28
29#![allow(clippy::too_many_arguments)]
30
31pub mod angle_net;
32pub mod base_net;
33pub mod compat;
34pub mod crnn_net;
35pub mod db_net;
36pub mod layout;
37pub mod model_hub;
38pub mod ocr_error;
39pub mod ocr_lite;
40pub mod ocr_result;
41pub mod ocr_utils;
42pub mod scale_param;
43pub mod cell_detection;
44pub mod doc_unwarp;
45pub mod formula_rec;
46pub mod table_classifier;
47pub mod table_structure;
48
49pub use ocr_error::OcrError;
50pub use ocr_lite::{LayoutAwareResult, OcrLite, OcrOptions, TextBlockWithLayout};
51pub use ocr_result::{Angle, OcrResult, Point, TextBlock, TextBox, TextLine, WordBox};
52pub use layout::{LayoutAnalyzer, LayoutBox, LayoutClass, SemanticClass, LAYOUT_INPUT_SIZE, xy_cut_order};
53pub use cell_detection::{CellDetector, CellBbox, derive_grid, grid_to_gfm, CELL_DETECT_INPUT_SIZE};
54pub use model_hub::{ModelHub, ModelPaths, PpOcrVersion, PpStructureModel, StructureModelPaths};
55pub use table_classifier::{TableTypeClassifier, TableType, DocOrientationClassifier, DocOrientation};
56pub use table_structure::{TableStructureRecognizer, TableStructure, TableCellBox, SLANEXT_INPUT_SIZE};
57pub use doc_unwarp::{DocUnwarper, UnwarpResult};
58pub use formula_rec::{FormulaRecognizer, FormulaResult, FORMULA_INPUT_SIZE};