1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
[]
= "ppocr-rs"
= "0.7.3"
= "2021"
= "PP-OCRv6 + PP-DocLayoutV3 + SLANet_plus + RT-DETR-L + PP-LCNet in puro Rust su ort 2.0.0-rc.9. Fork di meibel-ai/paddle-ocr-rs (Apache-2.0) con layout, table structure, cell detection e orientamento documento."
= "Apache-2.0"
= ["Dario Finardi <df@dariofinardi.it>"]
= "https://github.com/dariofinardi/PaddleOCR-OCR-rs"
= ["ocr", "paddleocr", "onnx", "document", "layout"]
= ["computer-vision", "science"]
= ["docs/", "tools/", "tests/", "ocr_test/", ".env", ".env.*"]
# Crediti upstream:
# - meibel-ai/paddle-ocr-rs (branch ort-rc11) — Apache-2.0
# - mg-chao/paddle-ocr-rs (upstream originale) — Apache-2.0
# Codice del db_net/crnn_net/cls_net/ocr_utils/scale_param porta avanti la
# Apache-2.0 e l'attribuzione nei header dei file vendorati.
[]
# ─── ONNX Runtime — pinned 2.0.0-rc.9 ───────────────────────────────────────
# meibel-ai/paddle-ocr-rs è su rc.11; il nostro downport implica una piccola
# modifica al return type di `try_extract_tensor` (vedi src/compat.rs).
# QNN escluso: bench su Snapdragon X Elite mostra che PP-OCRv6 non
# beneficia di Hexagon NPU (postprocessing CPU-bound + shape dinamiche).
= { = "=2.0.0-rc.9", = false, = ["ndarray", "directml", "coreml", "cuda", "xnnpack"] }
= "=2.0.0-rc.9"
# ─── Numerica & immagini ───
# ndarray 0.16 — ort rc.9 si appoggia a questa versione (rc.11 era su 0.17).
# Verificato con `cargo tree -i ndarray`. Mismatch → "multiple ndarray versions"
# e i tensor non implementano IntoValueTensor.
= "0.16"
= "0.25"
= "0.25"
# ─── Polygon offset (Vatti unclip) — pure Rust + cc per Clipper C++ ───
# Come paddle-ocr-rs upstream, niente system OpenCV.
= "0.7"
= "0.9"
= "0.8"
# ─── Errori ───
= "2"
# ─── Helper ───
= { = "1", = ["derive"] }
= "1"
# ─── Download modelli (feature-gated) ───
# ureq 2.x: HTTP sync senza tokio. TLS via rustls (no OpenSSL).
# Usato solo da `model_hub` per scaricare ONNX da HuggingFace.
= { = "2", = ["tls"], = true }
[]
= "1"
[]
= []
# Abilita ort/download-binaries — solo per test crate-side che linkano il
# binario di test (cargo test --lib --features test-binaries). Edge non
# usa questa feature: ha già il proprio onnxruntime.dll bundleato.
= ["ort/download-binaries"]
# Abilita ort/load-dynamic per gli example che usano dlopen al runtime
# invece del link statico. Necessario su ARM64 Windows dove pyke.io
# fornisce solo binari x64 al pinned rc.9 — load-dynamic carica la
# `onnxruntime.dll` di Edge (ARM64-native, bundled in
# Pseudo-Edge/src-tauri/target/debug/binaries/). Set ORT_DYLIB_PATH
# alla DLL prima del run.
= ["ort/load-dynamic"]
# Abilita download automatico dei modelli ONNX da HuggingFace.
# Aggiunge dipendenza `ureq` (HTTP sync, ~200 kB). Non incluso di default
# per tenere il grafo di dipendenze minimale quando i modelli sono già
# disponibili localmente (es. deployment Edge).
= ["dep:ureq"]
[[]]
= "ppocr-cli"
= "src/bin/ppocr_cli.rs"
= []
[]
# Per esempi e test
= "1"
# Multi-page TIFF decoder per gli example che usano fixture TIFF reali.
# `image` crate (TiffDecoder) espone solo single-frame; `tiff` direct
# permette di iterare su tutte le pagine via `Decoder::next_image()`.
= "0.10"
# ─── Profilo ottimizzato ───
[]
= 3
= "thin"
= 1