MAX_SLOPE constant

pull/19/head
Konstantin Baierer 4 years ago
parent 605f583d21
commit 254dd35666

@ -3,7 +3,6 @@
tool to extract table form data from alto xml data tool to extract table form data from alto xml data
""" """
import gc
import math import math
import os import os
import sys import sys
@ -91,6 +90,7 @@ from .plot import EynollahPlotter
SLOPE_THRESHOLD = 0.13 SLOPE_THRESHOLD = 0.13
RATIO_OF_TWO_MODEL_THRESHOLD = 95.50 #98.45: RATIO_OF_TWO_MODEL_THRESHOLD = 95.50 #98.45:
DPI_THRESHOLD = 298 DPI_THRESHOLD = 298
MAX_SLOPE = 999
class eynollah: class eynollah:
def __init__( def __init__(
@ -357,19 +357,13 @@ class eynollah:
_, page_coord = self.early_page_for_num_of_column_classification() _, page_coord = self.early_page_for_num_of_column_classification()
model_num_classifier, session_col_classifier = self.start_new_session_and_model(self.model_dir_of_col_classifier) model_num_classifier, session_col_classifier = self.start_new_session_and_model(self.model_dir_of_col_classifier)
img_1ch = self.imread(grayscale=True) img_1ch = self.imread(grayscale=True)
width_early = img_1ch.shape[1] width_early = img_1ch.shape[1]
img_1ch = img_1ch[page_coord[0] : page_coord[1], page_coord[2] : page_coord[3]] img_1ch = img_1ch[page_coord[0] : page_coord[1], page_coord[2] : page_coord[3]]
# plt.imshow(img_1ch) # plt.imshow(img_1ch)
# plt.show() # plt.show()
img_1ch = img_1ch / 255.0 img_1ch = img_1ch / 255.0
img_1ch = cv2.resize(img_1ch, (448, 448), interpolation=cv2.INTER_NEAREST) img_1ch = cv2.resize(img_1ch, (448, 448), interpolation=cv2.INTER_NEAREST)
img_in = np.zeros((1, img_1ch.shape[0], img_1ch.shape[1], 3)) img_in = np.zeros((1, img_1ch.shape[0], img_1ch.shape[1], 3))
img_in[0, :, :, 0] = img_1ch[:, :] img_in[0, :, :, 0] = img_1ch[:, :]
img_in[0, :, :, 1] = img_1ch[:, :] img_in[0, :, :, 1] = img_1ch[:, :]
@ -380,9 +374,7 @@ class eynollah:
label_p_pred = model_num_classifier.predict(img_in) label_p_pred = model_num_classifier.predict(img_in)
num_col = np.argmax(label_p_pred[0]) + 1 num_col = np.argmax(label_p_pred[0]) + 1
self.logger.info("Found %s columns (%s)", num_col, label_p_pred) self.logger.info("Found %s columns (%s)", num_col, label_p_pred)
session_col_classifier.close() session_col_classifier.close()
K.clear_session() K.clear_session()
@ -431,8 +423,6 @@ class eynollah:
self.scale_y = img_res.shape[0] / float(self.image_org.shape[0]) self.scale_y = img_res.shape[0] / float(self.image_org.shape[0])
self.scale_x = img_res.shape[1] / float(self.image_org.shape[1]) self.scale_x = img_res.shape[1] / float(self.image_org.shape[1])
def start_new_session_and_model(self, model_dir): def start_new_session_and_model(self, model_dir):
self.logger.debug("enter start_new_session_and_model (model_dir=%s)", model_dir) self.logger.debug("enter start_new_session_and_model (model_dir=%s)", model_dir)
config = tf.ConfigProto() config = tf.ConfigProto()
@ -864,9 +854,9 @@ class eynollah:
# text_patch_processed=textline_contours_postprocessing(gada) # text_patch_processed=textline_contours_postprocessing(gada)
except Exception as why: except Exception as why:
self.logger.error(why) self.logger.error(why)
slope_for_all = 999 slope_for_all = MAX_SLOPE
if slope_for_all == 999: if slope_for_all == MAX_SLOPE:
slope_for_all = [slope_deskew][0] slope_for_all = [slope_deskew][0]
slopes_per_each_subprocess.append(slope_for_all) slopes_per_each_subprocess.append(slope_for_all)
@ -975,9 +965,9 @@ class eynollah:
slope_for_all = [slope_deskew][0] slope_for_all = [slope_deskew][0]
except Exception as why: except Exception as why:
self.logger.error(why) self.logger.error(why)
slope_for_all = 999 slope_for_all = MAX_SLOPE
if slope_for_all == 999: if slope_for_all == MAX_SLOPE:
slope_for_all = [slope_deskew][0] slope_for_all = [slope_deskew][0]
slopes_per_each_subprocess.append(slope_for_all) slopes_per_each_subprocess.append(slope_for_all)
mask_only_con_region = np.zeros(textline_mask_tot_ea.shape) mask_only_con_region = np.zeros(textline_mask_tot_ea.shape)
@ -1049,9 +1039,9 @@ class eynollah:
slope_corresponding_textregion = return_deskew_slop(crop_img, sigma_des, plotter=self.plotter) slope_corresponding_textregion = return_deskew_slop(crop_img, sigma_des, plotter=self.plotter)
except Exception as why: except Exception as why:
self.logger.error(why) self.logger.error(why)
slope_corresponding_textregion = 999 slope_corresponding_textregion = MAX_SLOPE
if slope_corresponding_textregion == 999: if slope_corresponding_textregion == MAX_SLOPE:
slope_corresponding_textregion = slope_biggest slope_corresponding_textregion = slope_biggest
slopes_sub.append(slope_corresponding_textregion) slopes_sub.append(slope_corresponding_textregion)
@ -1851,28 +1841,21 @@ class eynollah:
K.clear_session() K.clear_session()
image_page = image_page.astype(np.uint8) image_page = image_page.astype(np.uint8)
# print(type(image_page))
regions_fully, regions_fully_only_drop = self.extract_text_regions(image_page, True, cols=num_col_classifier) regions_fully, regions_fully_only_drop = self.extract_text_regions(image_page, True, cols=num_col_classifier)
text_regions_p[:,:][regions_fully[:,:,0]==6]=6 text_regions_p[:,:][regions_fully[:,:,0]==6]=6
regions_fully_only_drop = put_drop_out_from_only_drop_model(regions_fully_only_drop, text_regions_p) regions_fully_only_drop = put_drop_out_from_only_drop_model(regions_fully_only_drop, text_regions_p)
regions_fully[:, :, 0][regions_fully_only_drop[:, :, 0] == 4] = 4 regions_fully[:, :, 0][regions_fully_only_drop[:, :, 0] == 4] = 4
K.clear_session() K.clear_session()
# plt.imshow(regions_fully[:,:,0]) # plt.imshow(regions_fully[:,:,0])
# plt.show() # plt.show()
regions_fully = putt_bb_of_drop_capitals_of_model_in_patches_in_layout(regions_fully) regions_fully = putt_bb_of_drop_capitals_of_model_in_patches_in_layout(regions_fully)
# plt.imshow(regions_fully[:,:,0]) # plt.imshow(regions_fully[:,:,0])
# plt.show() # plt.show()
K.clear_session() K.clear_session()
regions_fully_np, _ = self.extract_text_regions(image_page, False, cols=num_col_classifier) regions_fully_np, _ = self.extract_text_regions(image_page, False, cols=num_col_classifier)
# plt.imshow(regions_fully_np[:,:,0]) # plt.imshow(regions_fully_np[:,:,0])
# plt.show() # plt.show()
if num_col_classifier > 2: if num_col_classifier > 2:
regions_fully_np[:, :, 0][regions_fully_np[:, :, 0] == 4] = 0 regions_fully_np[:, :, 0][regions_fully_np[:, :, 0] == 4] = 0
else: else:
@ -1880,20 +1863,14 @@ class eynollah:
# plt.imshow(regions_fully_np[:,:,0]) # plt.imshow(regions_fully_np[:,:,0])
# plt.show() # plt.show()
K.clear_session() K.clear_session()
# plt.imshow(regions_fully[:,:,0]) # plt.imshow(regions_fully[:,:,0])
# plt.show() # plt.show()
regions_fully = boosting_headers_by_longshot_region_segmentation(regions_fully, regions_fully_np, img_only_regions) regions_fully = boosting_headers_by_longshot_region_segmentation(regions_fully, regions_fully_np, img_only_regions)
# plt.imshow(regions_fully[:,:,0]) # plt.imshow(regions_fully[:,:,0])
# plt.show() # plt.show()
text_regions_p[:, :][regions_fully[:, :, 0] == 4] = 4 text_regions_p[:, :][regions_fully[:, :, 0] == 4] = 4
text_regions_p[:, :][regions_fully_np[:, :, 0] == 4] = 4 text_regions_p[:, :][regions_fully_np[:, :, 0] == 4] = 4
#plt.imshow(text_regions_p) #plt.imshow(text_regions_p)
#plt.show() #plt.show()

Loading…
Cancel
Save