-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Not able to extract Textract merge cell text properly #72
Comments
We should add an option to pass in a function that can be used instead of the fixed logic. |
@sravzmum are you able to provide a sample document. |
I am also getting the above issue while merging the top and bottom headers. Some part of the column name in the top header is getting missed in some scenarios. Request your guidance on the same. |
@prasum Do you have a sample document you can share? Do you get the correct results from textract in the ocr step? |
sorry for the late reply. The sample document I would not be able to share due to internal restrictions. The scenario is same as the above document shared by @sravzmum . Yes I am able to get the correct results from textract in the ocr step |
We would need some sort of example otherwise we cant help. |
Not able to extract the merge cell text properly. There is some issue with combine headers function. Textract not able to extract the top header text properly.
Reference:
t_doc = TDocumentSchema().load(textract_json)
ordered_doc = order_blocks_by_geo(t_doc)
trp_doc = Document(TDocumentSchema().dump(ordered_doc))
Now let’s iterate through the tables’ content, and extract the data into a DataFrame:
table_index = 1
dataframes = []
def combine_headers(top_h, bottom_h):
bottom_h[3] = top_h[2] + " " + bottom_h[3]
bottom_h[4] = top_h[2] + " " + bottom_h[4]
for page in trp_doc.pages:
for table in page.tables:
table_data = []
headers = table.get_header_field_names() #New Table method to retrieve header column names
if(len(headers)>0): #Let's retain the only table with headers
print("Statememt headers: "+ repr(headers))
top_header= headers[0]
bottom_header = headers[1]
combine_headers(top_header, bottom_header) #The statement has two headers. let's combine them
for r, row in enumerate(table.rows_without_header): #New Table attribute returning rows without headers
table_data.append([])
for c, cell in enumerate(row.cells):
table_data[r].append(cell.mergedText) #New Cell attribute returning merged cells common values
if len(table_data)>0:
df = pd.DataFrame(table_data, columns=bottom_header)
Document table format:
with above logic:
With small changes in the combine header, my issue got solved to some extent:
But there is some issue with textract top header detection,
The text was updated successfully, but these errors were encountered: