AWS Lambda无法链接tesseract可执行文件

时间:2018-09-26 18:33:33

标签: amazon-web-services amazon-ec2 aws-lambda tesseract

Tesseract OCR on AWS Lambda via virtualenv

滚动到tesseract 4的Adapatations。 我已使用此链接为tesseract创建可执行文件和依赖库。我已经压缩了所有内容,并放弃了S3。

我正在使用lambda下载此zip,将依赖项提取到/ tmp文件夹中。现在,我计划在我的lambda(python3平台)中使用这些依赖项。

我收到此错误

Response:
{
  "errorMessage": "tesseract is not installed or it's not in your path",
  "errorType": "TesseractNotFoundError",

这是未设置环境变量的原因。 我已尝试执行此操作,但无法通过此错误。

# Setting the modules path
sys.path.insert(0, '/tmp/')
import boto3
import cv2
import numpy as np
import subprocess
os.environ['PATH'] = "{}:/tmp/pytesseract:/tmp/".format(os.environ['PATH'])
os.environ['TESSDATA_PREFIX'] = "/tmp/tessdata/"
import pytesseract

我在lambda函数中设置了这样的环境变量。我仍然遇到相同的错误。我什至尝试设置如下图所示的变量。仍然很不幸。

enter image description here

我确定此lambda软件包有效,因为我创建了一个新的ec2实例,下载了相同的zip文件,并将这些库提取到/ tmp /文件夹中。我写了一个基本的测试功能来测试tesseract。这行得通。

import cv2
import pytesseract
import os

# os.environ['PATH'] = "{}:/tmp/pytesseract:/tmp/".format(os.environ['PATH'])
os.environ['LD_LIBRARY_PATH'] = '/tmp/lib:/tmp'
config = ('-l eng --oem 1 --psm 3')
im = cv2.imread('pytesseract/test-european.jpg', cv2.IMREAD_COLOR)
text = pytesseract.image_to_string(im, config=config)
print(text)

有人可以告诉我我对lambda做错了什么。 我不想压缩所有内容,因为我的压缩文件大于50 MB。我也想尝试将软件包/模块/二进制文件从S3下载到lambda并使其工作。

2 个答案:

答案 0 :(得分:0)

显然,lambda不允许您更改PATH变量。

答案 1 :(得分:-1)

尝试将其添加到脚本中

pytesseract.pytesseract.tesseract_cmd = r'/ var / task / tesseract'