PythonException:Pypdf 中的“KeyError:'/Root”

问题描述 投票:0回答:1

每当我尝试通过代码读取多个 pdf 时,都会收到此错误 PythonException: 'KeyError: '/Root'' 。我的数据框包含 pdf 详细信息列表,包括内容和元数据。如果 df 仅包含一条记录,那么下面的代码可以正常工作,但是一旦我为下一个 pdf 添加另一行,代码就会给出上述错误。

import pypdf
from pyspark.sql.functions import udf
from pyspark.sql.types import ArrayType, StringType
from pyspark.sql.functions import explode, col
import io

# define function to read pdf file using pypdf
def read_pdf(filebytes: bytes):
    pdf_reader = pypdf.PdfReader(io.BytesIO(filebytes))
    pages = []
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text = page.extract_text()
        
        pages.append(text)
    return pages

# create UDF to apply the read_pdf function to each row of the DataFrame
read_pdf_udf = udf(read_pdf, (StringType()))
pdf_text = df.select(read_pdf_udf('content').alias('text'))

display(pdf_text)

任何人都可以帮我让这个工作适用于多个 pdf 文件吗?

这是在 Databricks 中的 Spark 集群上运行的,我尝试一步一步地研究该函数,因为这是一个 UDF 无法真正进入。

pyspark pypdf
1个回答
0
投票

您要么通过了非 pdf 文档,要么 pdf 已损坏。删除损坏的 pdf 或处理错误。

© www.soinside.com 2019 - 2024. All rights reserved.