@@ -43,6 +43,7 @@ def __init__(
4343 page_range ,
4444 model_path ,
4545 classes_path ,
46+ preprocess_options ,
4647 splitLeftRight ,
4748 ):
4849 super ().__init__ ()
@@ -51,6 +52,7 @@ def __init__(
5152 self .page_range = page_range
5253 self .model_path = model_path
5354 self .classes_path = classes_path
55+ self .preprocess_options = preprocess_options
5456 self .splitLeftRight = splitLeftRight
5557
5658 def run (self ):
@@ -64,12 +66,17 @@ def run(self):
6466 self .page_range ,
6567 model ,
6668 classes ,
69+ preprocess_options = self .preprocess_options ,
6770 split_lr = self .splitLeftRight ,
6871 )
6972 else :
7073 image = cv2 .imread (self .infile_path , cv2 .IMREAD_GRAYSCALE )
7174 analysis = process_image (
72- image , model , classes , split_lr = self .splitLeftRight
75+ image ,
76+ model ,
77+ classes ,
78+ preprocess_options = self .preprocess_options ,
79+ split_lr = self .splitLeftRight ,
7380 )
7481
7582 save_analysis (analysis , self .output_path )
@@ -117,7 +124,16 @@ def __init__(self):
117124
118125 self .layoutDeskew = QHBoxLayout ()
119126 self .chkDeskew = QCheckBox ("Deskew" , self )
127+ self .lblDeskew = QLabel ("max deg" )
128+ self .spnDeskew = QSpinBox (self )
129+ self .spnDeskew .setMinimumWidth (50 )
130+ self .spnDeskew .setValue (5 )
131+ self .spnDeskew .setMinimum (1 )
132+ self .spnDeskew .setMaximum (90 )
120133 self .layoutDeskew .addWidget (self .chkDeskew )
134+ self .layoutDeskew .addStretch ()
135+ self .layoutDeskew .addWidget (self .lblDeskew )
136+ self .layoutDeskew .addWidget (self .spnDeskew )
121137
122138 self .layoutDespeckle = QHBoxLayout ()
123139 self .chkDespeckle = QCheckBox ("Despeckle" , self )
@@ -218,13 +234,23 @@ def go(self):
218234
219235 self .enable_ui (False )
220236
237+ preprocess_options = PreprocessOptions ()
238+
239+ preprocess_options .deskew = self .chkDeskew .isChecked ()
240+ preprocess_options .despeckle = self .chkDespeckle .isChecked ()
241+ preprocess_options .close = self .chkClose .isChecked ()
242+ preprocess_options .despeckle_kernel_size = int (self .cmbDespeckle .currentText ())
243+ preprocess_options .close_kernel_size = self .spnClose .value ()
244+ preprocess_options .deskew_max_angle = self .spnDeskew .value ()
245+
221246 # Start OCR in a separate thread
222247 self .thread = OCRThread (
223248 self .infile_path ,
224249 output_path ,
225250 page_range ,
226251 self .txtSelectModel .text (),
227252 self .txtSelectMetadata .text (),
253+ preprocess_options ,
228254 self .chkTwoPageSpread .isChecked (),
229255 )
230256 self .thread .error .connect (self .display_error )
@@ -248,6 +274,12 @@ def enable_ui(self, enabled):
248274 if self .infile_path .endswith (".pdf" ):
249275 self .txtPages .setEnabled (enabled )
250276 self .chkTwoPageSpread .setEnabled (enabled )
277+ self .chkDeskew .setEnabled (enabled )
278+ self .chkDespeckle .setEnabled (enabled )
279+ self .chkClose .setEnabled (enabled )
280+ self .spnDeskew .setEnabled (enabled )
281+ self .cmbDespeckle .setEnabled (enabled )
282+ self .spnClose .setEnabled (enabled )
251283
252284 def parse_page_range (self , page_range ):
253285 """
0 commit comments