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函数中设置了这样的环境变量。我仍然遇到相同的错误。我什至尝试设置如下图所示的变量。仍然很不幸。
我确定此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并使其工作。
答案 0 :(得分:0)
显然,lambda不允许您更改PATH变量。
答案 1 :(得分:-1)
尝试将其添加到脚本中
pytesseract.pytesseract.tesseract_cmd = r'/ var / task / tesseract'