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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//! leptonica-recog - OCR preprocessing and recognition support
//!
//! This crate provides OCR preprocessing and recognition functionality including:
//!
//! - **Skew detection and correction**: Detect and correct document rotation
//! - **Baseline detection**: Find text baselines for line segmentation
//! - **Page segmentation**: Separate text, images, and whitespace regions
//! - **Character recognition**: Template-based character recognition (recog)
//! - **JBIG2 classification**: Connected component clustering for compression (jbclass)
//!
//! # Quick Start
//!
//! ```no_run
//! use leptonica::recog::skew::{find_skew_and_deskew, SkewDetectOptions};
//! use leptonica::core::{Pix, PixelDepth};
//!
//! // Load or create a document image
//! let pix = Pix::new(800, 600, PixelDepth::Bit1).unwrap();
//!
//! // Detect and correct skew
//! let (deskewed, result) = find_skew_and_deskew(&pix, &SkewDetectOptions::default()).unwrap();
//! println!("Detected skew: {} degrees (confidence: {})", result.angle, result.confidence);
//! ```
//!
//! # Character Recognition Example
//!
//! ```no_run
//! use leptonica::recog::recog::{Recog, create};
//!
//! // Create a recognizer with scaling
//! let mut recog = create(40, 40, 0, 150, 1).unwrap();
//!
//! // Train with labeled samples
//! // recog.train_labeled(&pix, "A").unwrap();
//!
//! // Finish training
//! // recog.finish_training().unwrap();
//!
//! // Identify characters
//! // let result = recog.identify_pix(&unknown_pix).unwrap();
//! ```
//!
//! # JBIG2 Classification Example
//!
//! ```no_run
//! use leptonica::recog::jbclass::{JbClasser, JbComponent, rank_haus_init};
//!
//! // Create a classifier
//! let mut classer = rank_haus_init(
//! JbComponent::Characters,
//! 150, 150, // max dimensions
//! 2, // structuring element size
//! 0.97 // rank value
//! ).unwrap();
//!
//! // Add pages and classify
//! // classer.add_page(&pix).unwrap();
//! // let data = classer.get_data().unwrap();
//! ```
//!
//! # Modules
//!
//! - [`skew`]: Skew detection and correction
//! - [`baseline`]: Text baseline detection
//! - [`pageseg`]: Page segmentation into regions
//! - [`recog`]: Template-based character recognition
//! - [`jbclass`]: JBIG2 connected component classification
//! - [`dewarp`]: Page dewarping (curvature correction)
//! - [`barcode`]: 1D barcode detection and decoding
pub use ;
// Re-export commonly used types from Phase 1
pub use ;
pub use ;
pub use ;
// Re-export commonly used types from Phase 2 - recog
pub use ;
// Re-export commonly used types from Phase 2 - jbclass
pub use ;
// Re-export commonly used types from dewarp
pub use ;
// Re-export commonly used types from barcode
pub use ;
// Re-export commonly used types from flipdetect
pub use ;
// Re-export core for convenience
pub use cratecore;