Получение ошибки Pytesseract при создании файла .exe с помощью pyinstaller - PullRequest
0 голосов
/ 20 января 2020

Итак, в основном я пытаюсь создать простое приложение flask, в котором мы можем использовать pytesseract для распознавания изображений и возврата данных в виде строки. А также я упаковываю все приложение в файл .exe с помощью pyinstaller после обфускации файлов python с помощью pyarmor.

Я также скопировал папку pytesseract и вставил ее рядом с файлами, чтобы добавить ее в файл run.spe c во время создания .exe, так как мне нужно связать эту зависимость с файлом .exe. Я получаю следующую ошибку при выполнении файла .exe

pytesseract.pytesseract.TesseractError: (1, 'Error opening data file C:\\Users\\Akash\\AppData\\Local\\Temp\\_MEI87082\\Tesseract-OCR\\tessdata\\e13b.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'e13b\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

. Для решения этой проблемы я добавил следующую строку для установки переменной среды:

os.environ['TESSDATA_PREFIX']='Tesseract-OCR/tessdata/'

и также пытались решить проблему добавления tessdata, относящегося к атрибуту config функции image_to_string(), следующим образом:

tessdata_dir_config = r'--tessdata-dir "Tesseract-OCR/tessdata/"'
content = pytesseract.image_to_string(image, lang='e13b', config=tessdata_dir_config)
print(content)

Но все же .exe-файл выдает ту же ошибку.

И также решить проблемы с путями Я использовал следующую функцию для установки абсолютного пути к файлам.

def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
import os,sys
try:
    # PyInstaller creates a temp folder and stores path in _MEIPASS
    base_path = sys._MEIPASS
except Exception:
            try:
                    base_path = sys._MEIPASS2
            except Exception:
                    base_path = os.path.abspath(".")
#print("base_path",base_path)
#print("relative_path",relative_path)
return os.path.join(base_path, relative_path)

Я надеюсь, что этой информации достаточно, чтобы ответить на вопрос, и если вам нужна дополнительная информация, просто задайте ее и ответите

Заранее спасибо.

1 Ответ

0 голосов
/ 20 января 2020

Итак, позже, когда я проверил мою локальную / временную папку, в которую файл .exe извлекал целые файлы, он понял, что после распаковки у него нет папки \ tessdata, для которой мы указали путь и e13b.traindata был директориально извлечен из папки «Tesseract-OCR».

Итак, в app.py указали путь

tessdata_dir_config = r'--tessdata-dir "Tesseract-OCR/tessdata/"'

К

tessdata_dir_config = r'--tessdata-dir "Tesseract-OCR"'

и наконец, это решило проблему.

Но опять застрял в другой ошибке ... ну, это другая история.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...