Следуя руководству здесь: https://www.petewilcock.com/using-poppler-pdftotext-and-other-custom-binaries-on-aws-lambda/ Мне удалось получить двоичные файлы с помощью EC2. Но теперь, что касается последнего шага, я не могу найти способ заставить pdf2image использовать путь Поплера. Получение ошибки:
"errorMessage": "Unable to get page count. Is poppler installed and in PATH?",
"errorType": "PDFInfoNotInstalledError",
Что я пробовал:
- Добавление лямбда-слоя с помощью package.zip из этого руководства, затем вызов
convert_from_bytes()
без poppler_path - Добавление лямбда-слоя с помощью package.zip из этого руководства, затем вызов
convert_from_bytes()
с poppler_path = '/ opt / lib /' - Добавление каталога / lib и / bin непосредственно в мою лямбду и вызов
convert_from_bytes()
с poppler_path = '/ var / task / lib /' Добавление лямбда-слоя с помощью package.zip из этого руководства и добавление переменной среды PATH, сопоставленной с / opt / 4a. Проделаем то же самое и сопоставим его с / opt / lib /
4b. Проделаем то же самое и сопоставим его с / opt / bin /
Моя лямбда для одного из вышеперечисленных:
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...