如何使用AWS Textract提取并合并PDF文本与表格(去重)
解决方法
要避免重复,最可靠的方式是提取页面中除表格外的所有文本,再拼接表格的结构化CSV内容——原text变量包含页面全部文本(包括表格内的文本),我们可以通过Textractor的元素过滤功能分离非表格文本和表格内容:
步骤1:补充导入所需类
先导入Table类用于识别表格元素:
from textractor import Textractor from textractor.data.constants import TextractFeatures from textractor.entities.table import Table # 新增导入
步骤2:提取非表格文本并合并表格内容
遍历页面所有元素,过滤掉表格类型元素后拼接剩余文本,再加上表格的CSV内容:
extractor = Textractor(region_name='us-east-1') document = extractor.start_document_analysis( file_source="s3://<document>.pdf", features=[TextractFeatures.TABLES], ) page = document.document.pages[0] # 提取不含表格的页面文本 non_table_text = "" for element in page.elements: if not isinstance(element, Table): non_table_text += element.text + "\n" # 获取表格CSV内容(兼容无表格的情况) table_csv = "" if page.tables: table_csv = page.tables[0].to_csv() # 合并无重复内容 combined_text = non_table_text.strip() + "\n\n" + table_csv.strip()
原理说明
Textractor的Page对象的elements属性包含页面上所有文本块、表格等元素,通过类型判断过滤表格后,得到的non_table_text是纯页面非表格文本,再拼接表格的结构化CSV内容,既保留了页面原有信息,又拥有表格的规整格式,完全避免重复。
如果页面包含多个表格,循环遍历page.tables逐个拼接CSV内容即可。
内容的提问来源于stack exchange,提问作者kahlo
相关产品推荐
相关产品推荐

