我需要使用python 3.7中的AWS lambda自动将许多pdf转换为文本文件
我已经在自己的计算机上使用poppler / pdftotext,tika和PyPDF2成功转换了pdf文件。但是,tika超时或需要在主机上运行Java实例,但我不确定该如何设置。 pdftotext需要poppler,并且所有在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",
答案 0 :(得分:0)
由于错误状态,您正在尝试写入只读文件系统。您正在使用download_file
方法,该方法尝试将文件保存到“ test.pdf”,但失败。尝试将download_fileobj
(link)与内存缓冲区(例如io.BytesIO
)一起使用。然后,将该流提供给PyPDF2。
示例:
import io
[...]
pdf_stream = io.StringIO()
object.download_fileobj(pdf_stream)
pdf_obj = PdfFileReader(pdf_stream)
[...]
答案 1 :(得分:0)
AWS lambda仅允许您写入/ tmp文件夹,因此您应该下载文件并将其放在其中