cx_Freeze:在其他PC上使用pytesseract可执行文件失败 [英] cx_Freeze: Executable with pytesseract fails on other PC
问题描述
我已经使用cx_Freeze从我的Python-OCR程序(导入pytesseract
)制作了一个可执行文件。生成的.exe在我自己的计算机上工作正常。为了测试该程序,我制作了一个zip文件夹,并在共享点上与一些朋友和同事共享。
现在可执行文件存在以下问题。似乎pytesseract没有包含在可执行文件/ zip文件夹中。
I've made an executable file from my Python - OCR program (import pytesseract
) using cx_Freeze. The resulting .exe works fine on my own machine. To test the program I made a zip-folder and shared it with some friends and colleagues on a share point.
Now there is the following problem with the executable. It seems like pytesseract isn't included in the executable / zip-folder.
这是ErrorLog:
Here is the ErrorLog:
The file is not a PNG-file: 20181108 Kontaktanzeigen-Er_sucht_sie.jpg
The file is not a PNG-file: 20181108 Kontaktanzeigen-Sie_sucht_ihn.jpg
The file is not a PNG-file: 20181108 Language family tree.jpg
The file is not a PNG-file: 20181108 relax.jpg
The file is not a PNG-file: 20181109 Essen wie Gott am Südpol S1.JPG
The file is not a PNG-file: 20181109 Fahrzeugschein1.jpg
The file is not a PNG-file: 20181112 sie_sind_alle_so_dumm.jpg
Exception in thread Thread-3:
Traceback (most recent call last):
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 170, in run_tesseract
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\subprocess.py", line 707, in __init__
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\subprocess.py", line 992, in _execute_child
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\threading.py", line 916, in _bootstrap_inner
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\threading.py", line 864, in run
File "C:\Users\TFischer\PycharmProjects\Test_Project\OCR.py", line 67, in img_to_text
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 294, in image_to_string
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 202, in run_and_get_output
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 172, in run_tesseract
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 170, in run_tesseract
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\subprocess.py", line 707, in __init__
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\subprocess.py", line 992, in _execute_child
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\threading.py", line 916, in _bootstrap_inner
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\threading.py", line 864, in run
File "C:\Users\TFischer\PycharmProjects\Test_Project\OCR.py", line 73, in img_to_text1
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 294, in image_to_string
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 202, in run_and_get_output
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pytesseract\pytesseract.py", line 172, in run_tesseract
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path
第一行绝对清楚。我发现了一些修改 setup.py
的想法,以将所有导入内容包含在cx_Freeze创建的可执行文件中。这是最新版本。
The first lines are absolute clear. I've found some ideas to modify setup.py
to include all imports in the executable created by cx_Freeze. Here is the latest version.
from cx_Freeze import setup, Executable
import os.path
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
additional_mods = ['numpy.core._methods', 'numpy.lib.format']
additional_files = [os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll')]
options = {
'build_exe': {'include_files': additional_files, 'includes': additional_mods}
}
setup(options = options,
name = "main" ,
version = "0.1" ,
description = "" ,
executables = [Executable("main.py")])
推荐答案
pytesseract
是Google Tesseract-OCR的包装引擎为了使 pytesseract
正常工作,需要安装Tesseract-OCR引擎,并且必须能够以 tesseract $ c的身份调用tesseract命令。 $ c>(这意味着Tesseract-OCR安装目录需要位于PATH中)。
pytesseract
is a wrapper for Google's Tesseract-OCR Engine. In order that pytesseract
works, the Tesseract-OCR engine needs to be installed and one must be able to invoke the tesseract command as tesseract
(this means that the Tesseract-OCR installation directory needs to be in the PATH).
我相信 pytesseract
已正确包含在可执行文件中,但 tesseract
命令在另一台PC上不起作用(未在其中安装Tesseract-OCR或Tesseract- OCR安装目录不在PATH中。)
I believe that pytesseract
has been properly included in the executable but that the tesseract
command does not work on the "other PC" (either Tesseract-OCR is not installed there or the Tesseract-OCR installation directory is not in the PATH there).
您需要告诉另一台PC的所有者安装Tesseract-OCR并检查是否可以从任何位置使用命令 tesseract
开始。
You need to tell the owner of the "other PC" to install Tesseract-OCR and to check that it can be started with the command tesseract
from any location.
另一个选择是包括整个Tesseract-OCR安装目录在冻结的可执行文件中,使用 build_exe
选项 include_files
(您的变量 additional_files
),并确保该公司包含的目录包含在目标PC的PATH中,但这可能与平台无关,因此不建议这样做。
Another option would be to include the whole Tesseract-OCR installation directory in the frozen executable using the build_exe
option include_files
(your variable additional_files
) and to make sure that this included directory gets included in the PATH on the target PC, but this is probably not platform-independent and thus not recommended.
这篇关于cx_Freeze:在其他PC上使用pytesseract可执行文件失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!