You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Textractor异步方法处理多页PDF文档?

问题

我使用Textractor包处理多页PDF文档时,通过循环将每页转换为图片的同步方法可正常运行,代码如下:

import os
from textractor import Textractor
from textractor.data.constants import TextractFeatures
import pypdfium2 as pdfium

pdf = pdfium.PdfDocument("myFile.pdf")
extractor = Textractor(region_name="us-east-1")


def convert_to_image(pdf, n):

   page=pdf[n]

   bitmap = page.render(
   scale = 1,
   rotation = 0, 
   extra_flags = 0,
   grayscale = False,
   fill_color = (255, 255, 255, 255),
   color_scheme = None,
   optimize_mode = None,
   draw_annots = True,
   may_draw_forms = True,
   no_smoothtext = False,
   no_smoothimage = False,
   no_smoothpath = False,
   force_halftone = False,
   rev_byteorder = False,
   prefer_bgrx = False,
   force_bitmap_format = None
   #extra_flags = 0,
   #allocator = None,
   #memory = 
   )
   image = bitmap.to_pil()

   return image

doc_words = []
doc_lines = []
for i in range(0, len(pdf)):
    print('page', i)
    pdf_page = convert_to_image(pdf, i)
    document = extractor.analyze_document(
        file_source=pdf_page,
        features=[TextractFeatures.FORMS, TextractFeatures.TABLES, TextractFeatures.SIGNATURES ])
    doc_words.append(document.words)
    doc_lines.append(document.lines)

但我不想采用这种逐页转图的方式,希望直接使用异步方法读取多页PDF并输出所有页面文本。尝试执行以下代码:

document = extractor.start_document_analysis(
              file_source = "myFile.pdf",
              s3_upload_path="s3uploadpath",
              features=[TextractFeatures.FORMS, TextractFeatures.TABLES, TextractFeatures.SIGNATURES])

却出现错误:

PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

解决方案

1. 解决Poppler依赖问题

start_document_analysis异步处理PDF时,Textractor依赖Poppler工具解析PDF页面信息,必须先完成安装和环境配置:

  • Windows:下载Poppler预编译包,解压后将包内的bin目录路径添加到系统环境变量PATH中。
  • macOS:通过Homebrew安装,执行命令:brew install poppler
  • Linux:使用系统包管理器安装,例如Ubuntu/Debian:sudo apt-get install poppler-utils

2. 正确使用异步方法处理多页PDF

完成Poppler配置后,即可直接用异步方法处理多页PDF,无需逐页转图。注意异步任务需要等待完成才能获取结果,示例代码如下:

from textractor import Textractor
from textractor.data.constants import TextractFeatures

extractor = Textractor(region_name="us-east-1")

# 启动异步文档分析任务,s3_upload_path需填写有效的S3存储路径
document_job = extractor.start_document_analysis(
    file_source="myFile.pdf",
    s3_upload_path="s3://your-bucket/your-folder/",
    features=[TextractFeatures.FORMS, TextractFeatures.TABLES, TextractFeatures.SIGNATURES]
)

# 等待任务完成并获取完整文档结果
document = document_job.wait_for_completion()

# 遍历所有页面提取文本内容
doc_words = []
doc_lines = []
for page in document.pages:
    doc_words.append(page.words)
    doc_lines.append(page.lines)

注意事项

  • s3_upload_path必须是有效的AWS S3路径,Textractor会先将本地PDF上传至该路径,再调用AWS Textract的异步API进行处理。
  • 异步方法更适合处理大体积或多页PDF,相比同步逐页处理效率更高。

内容的提问来源于stack exchange,提问作者mjoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:33:18