我需要使用python中的AWS lambda自动将许多PDF转换为文本文件3.7
我已经在自己的机器上成功地使用了Poppler/pdftotext,Tika和PypDF2转换PDF文件。但是Tika Times Out或需要在主机机上运行Java实例,我不确定该如何设置。pdftotext需要爆米花和在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",
aws lambda仅允许您写入/tmp文件夹,因此您应该下载文件并将其放入其中
作为错误指出,您正在尝试写入纯文件系统。您正在使用download_file
方法,该方法试图将文件保存到失败的" test.pdf"。尝试将download_fileobj
(链接(与内存缓冲区(例如io.BytesIO
(一起使用。然后,将该流馈入PYPDF2。
示例:
import io
[...]
pdf_stream = io.StringIO()
object.download_fileobj(pdf_stream)
pdf_obj = PdfFileReader(pdf_stream)
[...]