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

LangChain PDF问答项目报错:'bytes'对象无'seek'属性求解决

问题原因与解决方案

核心原因

这个错误的本质是你传递给PyPDF2.PdfReader的是bytes类型对象,但PdfReader要求的输入是可执行seek()方法的文件流对象(如打开的文件句柄)或文件路径字符串。seek()是文件IO对象的专属方法,bytes对象不具备该方法,因此触发了AttributeError。更换PyPDF2版本无法解决问题,因为这是参数类型传递错误,而非版本兼容问题。

修复方案

根据你获取PDF文件的方式,选择对应的修复方式:

场景1:通过Streamlit的file_uploader获取文件

如果你的docs是st.file_uploader()返回的UploadedFile对象(本质是封装后的bytes流),需要先用BytesIO将其包装成可seek的流对象:

from io import BytesIO
from PyPDF2 import PdfReader

def get_text(docs):
    raw_text = ""
    for pdf in docs:
        # 将上传的文件转换为可seek的BytesIO流
        pdf_stream = BytesIO(pdf.read())
        pdf_reader = PdfReader(pdf_stream)
        for page in pdf_reader.pages:
            page_text = page.extract_text()
            if page_text:  # 避免提取空文本
                raw_text += page_text
    return raw_text

场景2:直接处理本地文件路径

如果你的docs是本地PDF文件的路径列表,直接将路径字符串传给PdfReader即可:

from PyPDF2 import PdfReader

def get_text(docs):
    raw_text = ""
    for pdf_path in docs:
        pdf_reader = PdfReader(pdf_path)  # 直接传入文件路径
        for page in pdf_reader.pages:
            page_text = page.extract_text()
            if page_text:
                raw_text += page_text
    return raw_text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:45:13