Тессеракт OCR на AWS Lambda через virtualenv
Прокрутка до Адаптации для tesseract 4. Я использовал эту ссылку для создания исполняемого файла и библиотек зависимостей для tesseract.Я застегнул все на молнию и зашёл в S3.
Я использую lambda для загрузки этого zip-файла, извлеките зависимости в папку / tmp.Теперь я планирую использовать эти зависимости в моей лямбде (платформа 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
В лямбда-функции я установил переменные окружения следующим образом.Тем не менее я получаю ту же ошибку.Я даже пытался установить переменные, как показано на рисунке ниже.Все еще тяжелая удача.
Я уверен, что этот лямбда-пакет работает, потому что я создал новый экземпляр 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)
Может кто-нибудь сказать мне, что я сделал не так с лямбдой.Я не хочу все архивировать, потому что размер моего архива больше 50 МБ.Также я хочу попробовать загрузить пакеты / модули / двоичные файлы из S3 в lambda и заставить его работать.