如何使用 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 文件夹,因此您应该下载文件并将其放入其中
我需要在 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 文件夹,因此您应该下载文件并将其放入其中