AWS Textract文档指出,当提取表单和表格时,仅支持输入PDF文档的第一页。如果您需要从多页PDF中提取表单和表格,需要编写代码来将每个页面拆分为单独的文件,然后将每个文件单独传递给Textract。
以下是Python代码示例,用于从多页PDF中提取所有表单和表格:
import boto3
import io
from PyPDF2 import PdfFileReader, PdfFileWriter
TEXTRACT = boto3.client('textract')
def pdf_splitter(pdf_file):
pdf_reader = PdfFileReader(pdf_file)
for page_num in range(pdf_reader.getNumPages()):
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf_reader.getPage(page_num))
tf = io.BytesIO()
pdf_writer.write(tf)
tf.seek(0)
yield tf
def extract_tables_and_forms(pdf_file):
tables = []
forms = []
for page in pdf_splitter(pdf_file):
response = TEXTRACT.analyze_document(Document={'Bytes': page.read()},
FeatureTypes=['FORMS', 'TABLES'])
if 'Forms' in response:
forms.extend(response['Forms'])
if 'Tables' in response:
tables.extend(response['Tables'])
return tables, forms
上述代码将给出一个PDF文件,并使用PdfFileReader将其分割成页面,并从每个页面提取表格和表单。textract.analyze_document()用于提取表单和表格信息。
要使用此代码示例,请确保您已经安装了以下Python包:
运行示例的方式:
with open('multi_page.pdf', 'rb') as pdf_file:
tables, forms = extract_tables_and_forms(pdf_file)
print("Tables found: ", tables)
print("Forms found: ", forms)
请注意,AWS Textract会对数据进行收费。有关详细信息,请参阅官方文档。