我正在使用 AWS Textract 从 pdf 文档中提取文本和表格。 我需要可以解析提取的文本和提取的表格的代码,并按照它们在文档中出现的顺序将所有内容打印在一个字符串中。
该文档的示例如下所示。
表格上方有几行文本我想提取。 然后应该提取该表。 然后应该提取表格下方的文本行。
最后,代码应该按阅读顺序打印字符串中的所有内容。 比如
线路
...
[桌子]
...
线路
目前我正在使用texttract-trp。
from trp import Document
import boto3
textract_client = boto3.client('textract')
response = textract_client.analyze_document('my-sample.pdf')
doc = Document(response)
final_result = []
# Iterate over elements in the document
for page in doc.pages:
for line in page.lines:
final_result.append(line.text)
# Print tables
for table in page.tables:
for r, row in enumerate(table.rows):
for c, cell in enumerate(row.cells):
final_result.append(cell.text)
for item in final_result:
print(final_result)
但这只会将整个页面打印为提取的行或隔离的表格。
我还尝试使用库textractor。
from textractcaller.t_call import call_textract, Textract_Features
from textractprettyprinter.t_pretty_print import Textract_Pretty_Print, get_string, Pretty_Print_Table_Format
textract_json = call_textract(input_document='my-sample-pdf.pdf', features=[Textract_Features.LAYOUT, Textract_Features.TABLES])
layout = get_string(textract_json=textract_json, table_format=Pretty_Print_Table_Format.csv, output_type=[Textract_Pretty_Print.TABLES, Textract_Pretty_Print.LINES])
print(layout)
但又遇到了同样的问题。首先,它打印孤立的表格,然后将整个页面打印为文本行。
想通了!事实证明我不需要 textractprettyprinter。 analyze_document函数中的功能需要包括TABLES和LAYOUT。然后我需要 TextLinearizationConfig 来获取漂亮的降价格式的表格。
确保您 pip install amazon-texttract-textractor
from textractor import Textractor
from textractor.data.text_linearization_config import TextLinearizationConfig
from textractcaller.t_call import Textract_Features
extractor = Textractor(region_name='us-west-1')
config = TextLinearizationConfig(
table_linearization_format="markdown"
)
document = extractor.analyze_document(
file_source="mydoc.pdf",
features=[Textract_Features.LAYOUT, Textract_Features.TABLES]
)
print(document.get_text(config))