【问题标题】:Error on importing pdfminer in aws lambda在 aws lambda 中导入 pdfminer 时出错
【发布时间】:2018-02-27 06:54:59
【问题描述】:

很抱歉问了重复的问题,因为他们没有解决我之前已经在这里问过的问题,如何使用 lambda 函数将 pdf 文件从 s3 转换为字符串变量,

我的 lambda 函数显示错误

我在this answer 中找到以下代码 但我坚持在 lambda 中实现此代码,请分享您的想法,如果下面的代码正确,数据变量将包含 s3 中 pdf 文件的字符串转换。如果否,请提出一些更改我的代码的建议

Unable to import module 'lambda_function': No module named 'pdfminer'

import json
import boto3
import botocore
import sys
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
import io
s3 = boto3.client('s3')
def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    filename = 'myfile'
    s3.download_file(bucket,key, '/tmp/'+filename)
    print('reading')
    fp = open('/tmp/'+filename, 'rU').read()
    rsrcmgr = PDFResourceManager()
    retstr = io.StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    # Create a PDF interpreter object.
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    # Process each page contained in the document.

    for page in PDFPage.get_pages(fp):
    interpreter.process_page(page)
    data =  retstr.getvalue()

    print(data)

【问题讨论】:

    标签: python amazon-web-services aws-lambda pdfminer


    【解决方案1】:

    这里的问题是您的 lambda 函数无法找到 pdfminer 库。该库不存在于 lambda 容器中。为了克服这个问题,您需要将库安装在应用程序的根目录中(您的 lambda_handler 文件所在的位置)。要做到这一点,有两种方法:

    1. 通过在您的目录的根目录中运行以下命令来安装 pdfminter:pip install pdfminter -t ./
    2. 在应用程序的根目录中创建一个 requirements.txt 文件,并在其中定义 pdfminter。通过在目录的根目录中运行以下命令来安装所有依赖项:pip install -r requirements.txt -t ./

    始终建议您在虚拟环境中运行上述命令。

    参考资料:

    • 请参阅 this AWS 文档,了解如何为 Lambda 创建部署包。
    • 参考this stackoverflow 问题,他们在另一个依赖项中遇到了类似的问题。
    • 可在here 找到列出默认安装在 Python Lambda 环境中的所有模块的文档

    【讨论】:

      猜你喜欢
      • 2021-03-28
      • 2021-10-12
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2021-11-01
      • 2018-06-20
      • 2016-05-22
      相关资源
      最近更新 更多