AWS Lambda не может связать исполняемый файл tesseract - PullRequest
0 голосов
/ 26 сентября 2018

Тессеракт 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

В лямбда-функции я установил переменные окружения следующим образом.Тем не менее я получаю ту же ошибку.Я даже пытался установить переменные, как показано на рисунке ниже.Все еще тяжелая удача.

enter image description here

Я уверен, что этот лямбда-пакет работает, потому что я создал новый экземпляр 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 и заставить его работать.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Попробуйте добавить это в ваш скрипт

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

0 голосов
/ 26 сентября 2018

Очевидно, что лямбда не позволяет вам вносить изменения в переменную PATH.

...