【发布时间】:2020-06-20 08:56:26
【问题描述】:
按照此处的指南:https://www.petewilcock.com/using-poppler-pdftotext-and-other-custom-binaries-on-aws-lambda/ 我能够使用 EC2 获取二进制文件。但现在对于最后一步,我似乎找不到让 pdf2image 使用 poppler 路径的方法。出现错误:
"errorMessage": "Unable to get page count. Is poppler installed and in PATH?",
"errorType": "PDFInfoNotInstalledError",
我尝试过的:
- 使用该指南中的 package.zip 添加 lambda 层,然后
在没有 poppler_path 的情况下调用
convert_from_bytes() - 使用该指南中的 package.zip 添加 lambda 层,然后使用 poppler_path = '/opt/lib/' 调用
convert_from_bytes() - 将 /lib 和 /bin 目录直接添加到我的 lambda 并使用 poppler_path = '/var/task/lib/' 调用
convert_from_bytes() -
使用该指南中的 package.zip 添加 lambda 层,并添加映射到 /opt/ 的环境变量 PATH 4a。做同样的事情并将其映射到 /opt/lib/
4b。做同样的事情并将其映射到 /opt/bin/
我的 lambda 用于上述之一:
import json
import base64
import os
from uuid import uuid4
from pdf2image import convert_from_bytes
POPPLER_PATH = '/opt/lib/'
def text_process_handler(event, context):
document = bucketHelper.get_bucket_object('<Bucket>', '<document>.pdf')
images = convert_from_bytes(document,dpi=150, poppler_path=POPPLER_PATH)
return {
"statusCode": 200,
"body": json.dumps({
"message": "Successful request."
}),
}
我的package.zip 看起来像:
+--lib
| +--libpoppler.so.70
| +--libtiff.so.5
| +--etc...
+--bin
| +--pdftoppm
| +--pdftotext
| +--etc...
【问题讨论】:
标签: python-3.x aws-lambda poppler