如何使用 AWS lambda 将 pdf 文件转换为 .txt python

How to use AWS lambda to convert pdf files to .txt with python

我需要在 python 3.7

中使用 AWS lambda 将许多 pdf 自动转换为文本文件

我已经在自己的机器上使用 poppler/pdftotext、tika 和 PyPDF2 成功地转换了 pdf 文件。但是 tika 超时或需要 运行 主机上的 java 实例,我不确定如何设置。 pdftotext 需要 poppler 和 运行ning 在 lambda 上的所有解决方案似乎已经过时,或者我对二进制文件不够熟悉,无法理解该解决方案。 PyPDF2 似乎是最有前途的,但测试会引发错误。

我得到的 PyPDF2 代码和错误如下:

pdf_file = open(s3.Bucket(my_bucket).download_file('test.pdf','test.pdf'),'rb')

  "errorMessage": "[Errno 30] Read-only file system: 'test.pdf.3F925aC8'",
  "errorType": "OSError",



and if I try to reference it directly,
pdf_file = open('https://s3.amazonaws.com/' + my_bucket + '/test.pdf', 'rb')

  "errorMessage": "[Errno 2] No such file or directory: 'https://s3.amazonaws.com/my_bucket/test.pdf'",
  "errorType": "FileNotFoundError",

如错误所述,您正在尝试写入 read-only 文件系统。您正在使用 download_file 方法尝试将文件保存到 'test.pdf',但失败了。尝试将 download_fileobj (link) 与 in-memory 缓冲区(例如 io.BytesIO)一起使用。然后,将该流提供给 PyPDF2。

示例:

import io
[...]

pdf_stream = io.StringIO()
object.download_fileobj(pdf_stream)
pdf_obj = PdfFileReader(pdf_stream)

[...]

AWS lambda 只允许写入 /tmp 文件夹,因此您应该下载文件并将其放入其中