Expand description
df-ocr-switcher — pipeline OCR documento in puro Rust.
§Architettura
Input (TIFF/PNG/JPEG)
└── DocPipeline
├── DocOrientationClassifier (ppocr-rs PP-LCNet) → rotazione
├── LayoutAnalyzer (ppocr-rs PP-DocLayoutV3) → regioni
└── OcrEngine (impl):
├── PpOcrEngine → detect_with_layout (PP-OCRv6)
└── TesseractEngine → Ocr5Engine + layout assignment
└── Output
├── Markdown (to_markdown)
└── JSON (serde_json)§Quickstart
use df_ocr_switcher::{DocPipeline, OutputFormat, PpOcrEngineConfig, engine::ppocr::PpOcrEngine};
use std::path::PathBuf;
let engine = PpOcrEngine::new(PpOcrEngineConfig::default()).unwrap();
let mut pipeline = DocPipeline::new(
Box::new(engine),
"models/paddleocr/layout/PP-DocLayoutV3.onnx",
).unwrap();
let md = pipeline.process_file("scan.tiff", OutputFormat::Markdown).unwrap();
println!("{md}");Re-exports§
pub use engine::OcrBlock;pub use engine::OcrEngine;pub use engine::OcrFormula;pub use engine::OcrLayoutBox;pub use engine::OcrPageResult;pub use engine::OcrTable;pub use engine::OcrWord;pub use engine::ppocr::OcrModelPaths;pub use engine::ppocr::PpOcrEngine;pub use engine::ppocr::PpOcrEngineConfig;pub use engine::ppocr::TableModelPaths;pub use error::Error;pub use error::Result;pub use output::markdown::page_to_markdown;pub use output::markdown::to_markdown;pub use pipeline::DocPipeline;pub use pipeline::OutputFormat;