Python 3.x PDFinFonotInstallerRor AWS Lambda can';无法使用pdf2image找到Poppler路径
按照这里的指南:我能够使用EC2获得二进制文件。但现在说到最后一步,我似乎找不到一种方法让pdf2image使用poppler路径。获取错误:Python 3.x PDFinFonotInstallerRor AWS Lambda can';无法使用pdf2image找到Poppler路径,python-3.x,aws-lambda,poppler,Python 3.x,Aws Lambda,Poppler,按照这里的指南:我能够使用EC2获得二进制文件。但现在说到最后一步,我似乎找不到一种方法让pdf2image使用poppler路径。获取错误: "errorMessage": "Unable to get page count. Is poppler installed and in PATH?", "errorType": "PDFInfoNotInstalledError", 我所尝试的: 使用该指南中的package.zip添加lambda层,然后 调用convert\u fro
"errorMessage": "Unable to get page count. Is poppler installed and in PATH?",
"errorType": "PDFInfoNotInstalledError",
我所尝试的:
convert\u from\u bytes()
时没有poppler\u路径convert\u from\u bytes()
convert\u from\u bytes()
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."
}),
}
了解问题
好的,我在前两天一直在做这件事,div甚至深入到pdf2image包中,以了解错误发生的原因
以下是导致错误的原因:
pdf2image python包使用子进程库来运行二进制文件,如(pdfinfo、pdftocairo等)
它运行一个Linux命令,比如pdfinfo/path/to/pdf/file
在我的例子中,压缩时的二进制文件似乎是在chmod-r750
(在我的例子中),这阻止了子流程库运行导致错误“permission denied”的命令,然后返回pdf2image包来告诉您所面临的相同错误
如何解决:
在压缩二进制文件之前,请确保通过运行chmod-R 777在777上修改文件。
然后在运行方法convert\u from\u path()
时,将poppler\u路径设置为二进制文件的distenation
就这样
注意:我创建了一个仅包含要使用的popplet UTIL二进制文件的层
在函数中
+--lib
| +--libpoppler.so.70
| +--libtiff.so.5
| +--etc...
+--bin
| +--pdftoppm
| +--pdftotext
| +--etc...