Merged in bugfix/inconsistent_table_sequences (pull request #523)
Bugfix/inconsistent table sequences * changes for inconsistent table sequence * Added code comment block * Merged main into bugfix/inconsistent_table_sequences * Merged main into bugfix/inconsistent_table_sequences * Merged main into bugfix/inconsistent_table_sequences * Merged main into bugfix/inconsistent_table_sequences Approved-by: Katon Minhas
This commit is contained in:
@@ -355,18 +355,43 @@ def concatenate_page_text_from_child_ids(
|
||||
|
||||
if textract_table_response is not None:
|
||||
child_ids_list = []
|
||||
table_text = get_table_text(textract_table_response, child_ids_list)
|
||||
table_text, table_text_dataframe_dicts = get_table_text(textract_table_response, child_ids_list)
|
||||
table_child_ids_list = []
|
||||
table_child_ids_list = list_line_ids_from_table_blocks(
|
||||
textract_table_response
|
||||
)
|
||||
lines_text = get_lines(textract_table_response, table_child_ids_list)
|
||||
lines_text, lines_text_blocks = get_lines(textract_table_response, table_child_ids_list)
|
||||
|
||||
concatenated_text = f"""
|
||||
{lines_text}
|
||||
table_blocks = [item["table_block"] for item in table_text_dataframe_dicts]
|
||||
combined_blocks = lines_text_blocks + table_blocks
|
||||
|
||||
{table_text}
|
||||
"""
|
||||
# Sort the combined list by 'Top' (vertical position) and 'Left' (horizontal position)
|
||||
sorted_blocks = sorted(
|
||||
combined_blocks,
|
||||
key=lambda x: (
|
||||
x.get("Geometry", {}).get("BoundingBox", {}).get("Top", 0),
|
||||
x.get("Geometry", {}).get("BoundingBox", {}).get("Left", 0),
|
||||
),
|
||||
)
|
||||
|
||||
# All blocks merged together to create original sequence
|
||||
concatenated_text = ""
|
||||
for current_block in sorted_blocks:
|
||||
if current_block ["BlockType"] == "LINE":
|
||||
concatenated_text += (current_block["Text"] + "\n")
|
||||
elif current_block ["BlockType"] == "TABLE":
|
||||
for table_metadata in table_text_dataframe_dicts:
|
||||
if table_metadata["table_id"] == current_block["Id"]:
|
||||
dataframe_dicts_str = "\n".join(str(text) for text in table_metadata['table_text'])
|
||||
concatenated_text += dataframe_dicts_str + "\n"
|
||||
|
||||
|
||||
|
||||
# concatenated_text = f"""
|
||||
# {lines_text}
|
||||
|
||||
# {table_text}
|
||||
# """
|
||||
if final_number_of_signature == 0:
|
||||
signature_page_word_list = ["IN WITNESS WHEREOF", "Signature"]
|
||||
matched_count = strings_contained(signature_page_word_list, concatenated_text)
|
||||
@@ -559,6 +584,7 @@ def get_lines(json_data, child_ids_list):
|
||||
|
||||
def extract_text(data):
|
||||
text_lines = ""
|
||||
text_lines_block = []
|
||||
for block_id, block_data in data.items():
|
||||
# TODO: UNDO this as the next line is commented for HN fac table troubleshoot
|
||||
if block_id not in child_ids_list:
|
||||
@@ -566,7 +592,8 @@ def get_lines(json_data, child_ids_list):
|
||||
text_lines += (
|
||||
block_data["Text"] + "\n"
|
||||
) # Append text line and add newline character
|
||||
return text_lines
|
||||
text_lines_block.append(block_data)
|
||||
return text_lines, text_lines_block
|
||||
|
||||
return extract_text(lines)
|
||||
|
||||
@@ -729,16 +756,27 @@ def get_table_text(json_data, child_ids_list):
|
||||
] = merged_text
|
||||
|
||||
logger.info(f"Table content = {content}")
|
||||
dataframe_dicts.append("-------Table Start--------")
|
||||
dataframe_dicts.append(get_table_title_children_ids(table))
|
||||
dataframe_dicts.append(content)
|
||||
dataframe_dicts.append(get_table_footer_children_ids(table))
|
||||
dataframe_dicts.append("-------Table End--------")
|
||||
|
||||
dataframe_dict_table_text = []
|
||||
|
||||
dataframe_dict_table_text.append("-------Table Start--------")
|
||||
dataframe_dict_table_text.append(get_table_title_children_ids(table))
|
||||
dataframe_dict_table_text.append(content)
|
||||
dataframe_dict_table_text.append(get_table_footer_children_ids(table))
|
||||
dataframe_dict_table_text.append("-------Table End--------")
|
||||
|
||||
table_metadata = {
|
||||
"table_text": dataframe_dict_table_text,
|
||||
"table_block": table,
|
||||
"table_id": table["Id"]
|
||||
}
|
||||
|
||||
dataframe_dicts.append(table_metadata)
|
||||
|
||||
dataframe_dicts_str = "\n".join(
|
||||
str(dataframe_dict) for dataframe_dict in dataframe_dicts
|
||||
)
|
||||
return dataframe_dicts_str
|
||||
return dataframe_dicts_str, dataframe_dicts
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error in get_table_text: {e}")
|
||||
|
||||
Reference in New Issue
Block a user