mirror of
https://github.com/qurator-spk/eynollah.git
synced 2025-10-26 23:34:13 +01:00
return_boxes_of_images_by_order_of_reading_new: fix no-mother case
- when handling lines without mother, and biggest line already accounts for all columns, but some are too close to the top and therefore must be removed, avoid invalidating `biggest` index, causing `IndexError` - remove try-catch (now unnecessary) - array instead of list operations
This commit is contained in:
parent
7c3e418588
commit
0fc4b2535d
1 changed files with 29 additions and 33 deletions
|
|
@ -1919,54 +1919,50 @@ def return_boxes_of_images_by_order_of_reading_new(
|
||||||
x_starting_all_between_nm_wc = x_starting[ind_all_lines_between_nm_wc]
|
x_starting_all_between_nm_wc = x_starting[ind_all_lines_between_nm_wc]
|
||||||
x_ending_all_between_nm_wc = x_ending[ind_all_lines_between_nm_wc]
|
x_ending_all_between_nm_wc = x_ending[ind_all_lines_between_nm_wc]
|
||||||
|
|
||||||
x_diff_all_between_nm_wc = x_ending_all_between_nm_wc - x_starting_all_between_nm_wc
|
|
||||||
if len(x_diff_all_between_nm_wc)>0:
|
|
||||||
biggest=np.argmax(x_diff_all_between_nm_wc)
|
|
||||||
|
|
||||||
columns_covered_by_mothers = set()
|
columns_covered_by_mothers = set()
|
||||||
for dj in range(len(x_starting_all_between_nm_wc)):
|
for dj in range(len(ind_all_lines_between_nm_wc)):
|
||||||
columns_covered_by_mothers.update(
|
columns_covered_by_mothers.update(
|
||||||
range(x_starting_all_between_nm_wc[dj],
|
range(x_starting_all_between_nm_wc[dj],
|
||||||
x_ending_all_between_nm_wc[dj]))
|
x_ending_all_between_nm_wc[dj]))
|
||||||
child_columns = set(range(i_s_nc, x_end_biggest_column))
|
child_columns = set(range(i_s_nc, x_end_biggest_column))
|
||||||
columns_not_covered = list(child_columns - columns_covered_by_mothers)
|
columns_not_covered = list(child_columns - columns_covered_by_mothers)
|
||||||
|
|
||||||
should_longest_line_be_extended=0
|
if len(ind_all_lines_between_nm_wc):
|
||||||
if (len(x_diff_all_between_nm_wc) > 0 and
|
biggest = np.argmax(x_ending_all_between_nm_wc -
|
||||||
set(list(range(x_starting_all_between_nm_wc[biggest],
|
x_starting_all_between_nm_wc)
|
||||||
x_ending_all_between_nm_wc[biggest])) +
|
if columns_covered_by_mothers == set(
|
||||||
list(columns_not_covered)) != child_columns):
|
range(x_starting_all_between_nm_wc[biggest],
|
||||||
should_longest_line_be_extended=1
|
x_ending_all_between_nm_wc[biggest])):
|
||||||
index_lines_so_close_to_top_separator = \
|
# biggest accounts for all columns alone,
|
||||||
np.arange(len(y_all_between_nm_wc))[(y_all_between_nm_wc>y_column_nc[i_c]) &
|
# longest line should be extended
|
||||||
(y_all_between_nm_wc<=(y_column_nc[i_c]+500))]
|
lines_so_close_to_top_separator = \
|
||||||
if len(index_lines_so_close_to_top_separator) > 0:
|
((y_all_between_nm_wc > y_column_nc[i_c]) &
|
||||||
indexes_remained_after_deleting_closed_lines= \
|
(y_all_between_nm_wc <= y_column_nc[i_c] + 500))
|
||||||
np.array(list(set(list(range(len(y_all_between_nm_wc)))) -
|
if (np.count_nonzero(lines_so_close_to_top_separator) and
|
||||||
set(list(index_lines_so_close_to_top_separator))))
|
np.count_nonzero(lines_so_close_to_top_separator) <
|
||||||
if len(indexes_remained_after_deleting_closed_lines) > 0:
|
len(ind_all_lines_between_nm_wc)):
|
||||||
y_all_between_nm_wc = \
|
y_all_between_nm_wc = \
|
||||||
y_all_between_nm_wc[indexes_remained_after_deleting_closed_lines]
|
y_all_between_nm_wc[~lines_so_close_to_top_separator]
|
||||||
x_starting_all_between_nm_wc = \
|
x_starting_all_between_nm_wc = \
|
||||||
x_starting_all_between_nm_wc[indexes_remained_after_deleting_closed_lines]
|
x_starting_all_between_nm_wc[~lines_so_close_to_top_separator]
|
||||||
x_ending_all_between_nm_wc = \
|
x_ending_all_between_nm_wc = \
|
||||||
x_ending_all_between_nm_wc[indexes_remained_after_deleting_closed_lines]
|
x_ending_all_between_nm_wc[~lines_so_close_to_top_separator]
|
||||||
|
|
||||||
y_all_between_nm_wc = np.append(y_all_between_nm_wc, y_column_nc[i_c])
|
y_all_between_nm_wc = np.append(y_all_between_nm_wc, y_column_nc[i_c])
|
||||||
x_starting_all_between_nm_wc = np.append(x_starting_all_between_nm_wc, i_s_nc)
|
x_starting_all_between_nm_wc = np.append(x_starting_all_between_nm_wc, i_s_nc)
|
||||||
x_ending_all_between_nm_wc = np.append(x_ending_all_between_nm_wc, x_end_biggest_column)
|
x_ending_all_between_nm_wc = np.append(x_ending_all_between_nm_wc, x_end_biggest_column)
|
||||||
|
else:
|
||||||
if len(x_diff_all_between_nm_wc) > 0:
|
|
||||||
try:
|
|
||||||
y_all_between_nm_wc = np.append(y_all_between_nm_wc, y_column_nc[i_c])
|
y_all_between_nm_wc = np.append(y_all_between_nm_wc, y_column_nc[i_c])
|
||||||
x_starting_all_between_nm_wc = np.append(x_starting_all_between_nm_wc, x_starting_all_between_nm_wc[biggest])
|
x_starting_all_between_nm_wc = np.append(x_starting_all_between_nm_wc, x_starting_all_between_nm_wc[biggest])
|
||||||
x_ending_all_between_nm_wc = np.append(x_ending_all_between_nm_wc, x_ending_all_between_nm_wc[biggest])
|
x_ending_all_between_nm_wc = np.append(x_ending_all_between_nm_wc, x_ending_all_between_nm_wc[biggest])
|
||||||
except:
|
|
||||||
logger.exception("cannot append")
|
|
||||||
|
|
||||||
y_all_between_nm_wc = np.append(y_all_between_nm_wc, [y_column_nc[i_c]] * len(columns_not_covered))
|
if len(columns_not_covered):
|
||||||
x_starting_all_between_nm_wc = np.append(x_starting_all_between_nm_wc, np.array(columns_not_covered, int))
|
y_all_between_nm_wc = np.append(
|
||||||
x_ending_all_between_nm_wc = np.append(x_ending_all_between_nm_wc, np.array(columns_not_covered, int) + 1)
|
y_all_between_nm_wc, [y_column_nc[i_c]] * len(columns_not_covered))
|
||||||
|
x_starting_all_between_nm_wc = np.append(
|
||||||
|
x_starting_all_between_nm_wc, np.array(columns_not_covered, int))
|
||||||
|
x_ending_all_between_nm_wc = np.append(
|
||||||
|
x_ending_all_between_nm_wc, np.array(columns_not_covered, int) + 1)
|
||||||
|
|
||||||
ind_args_between=np.arange(len(x_ending_all_between_nm_wc))
|
ind_args_between=np.arange(len(x_ending_all_between_nm_wc))
|
||||||
for column in range(int(i_s_nc), int(x_end_biggest_column)):
|
for column in range(int(i_s_nc), int(x_end_biggest_column)):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue