Python Pyinstaller和Tesseract OCR
我正在为我的程序使用Tesseract OCR,我将使用pyinstaller将其转换为单个.exe文件。问题是,为了使Tesseract工作,我需要引用安装在计算机上的程序的路径,如下所示:Python Pyinstaller和Tesseract OCR,python,ocr,pyinstaller,tesseract,python-tesseract,Python,Ocr,Pyinstaller,Tesseract,Python Tesseract,我正在为我的程序使用Tesseract OCR,我将使用pyinstaller将其转换为单个.exe文件。问题是,为了使Tesseract工作,我需要引用安装在计算机上的程序的路径,如下所示:pytesseract.pytesseract.Tesseract\u cmd='E:\\Tesseract OCR\\Tesseract' 因为这不仅仅是一个可以导入的独立库,而是一个独立的程序,所以我不能将它作为'--add_data'参数传递给pyinstaller。那么如何使一个文件可执行?假设您在
pytesseract.pytesseract.Tesseract\u cmd='E:\\Tesseract OCR\\Tesseract'
因为这不仅仅是一个可以导入的独立库,而是一个独立的程序,所以我不能将它作为'--add_data'参数传递给pyinstaller。那么如何使一个文件可执行?假设您在Windows上,我遇到了这个问题,并认为我通过编译tesseract的静态版本(无需安装)并将其路径作为二进制文件包含在pyinstaller spec文件中解决了这个问题 官方编译说明如下: 安装MS Visual Studio 15(使用c++)和vcpkg,并通过命令提示符执行以下操作之一: 对于64位: vcpkg安装tesseract:x64 windows静态 对于32位: vcpkg安装tesseract:x86 windows静态 tesseract可执行文件将位于您电脑上vcpkg文件夹中的几个子文件夹中。使用该文件,您还需要下载一个.trainedData文件,并将其放置在与tesseract可执行文件位于同一目录中名为“TesserData”的文件夹中 创建pyinstaller规范文件并编辑分析(binaries=[])部分,以包括tesseract所在的文件夹路径(如果您没有为tesseract使用子文件夹,我认为您需要同时添加tesseract.exe和TesserData子文件夹)。我还更改了inclide_binaries=True 运行pyinstaller并包含选项--specpath'yourspecfile.spec'
我还没有尝试在不同的PC上尝试,所以还没有完全测试它是按预期的方式工作的(我不知道编译C++的任何东西,因为我在PC上测试过,所以TestSerAt仍然需要附加的文件/链接)
,因为用PyStUnter捆绑所有的东西可能是一个真正的痛苦,我执行了以下步骤:
使用外部安装程序,您可以自由使用path变量 我一直尝试pyinstaller和ocrmypdf,但都没有成功。我最终使用了Nuitka。从一开始就工作:-) 使用诸如:
python -m nuitka --mingw64 --standalone --follow-imports yourapp.py
这里的某个地方已经有了类似的答案,只是再也找不到链接到它了。毕竟我让它与Pyinstaller一起运行 首先,我需要创建2个钩子文件,如下所述: 然后,在运行exe时,我仍然收到一个错误,缺少
pikepdf.\u cpphelpers
要解决这个问题,只需添加
from pikepdf import _cpphelpers
在python文件中,如下所述:
我的Pyinstaller调用如下所示:
pyinstaller --onefile appname.py --paths="C:\python\anaconda3\envs\appname\Lib\site-packages" --additional-hooks-dir="C:\coding\appname\Hooks"
奥巴马的回答是正确的,但缺乏细节。以下说明已在64位Windows 10上测试。此处链接到官方编译说明:
步骤:
您可以添加所需的任何其他组件,但这些组件是将tesseract编译为静态二进制文件所需的组件。另外,如果您不使用英语,请单击语言包选项卡并添加英语语言包,这是vcpkg所需要的
vcpkg安装tesseract:x64 windows static
,或对32位运行vcpkg安装tesseract:x86 windows static
放置tesseract目录\tesseract\u x64-windows-static\tools\tesseract
的位置;对于32位,转到放置tesseract目录\tesseract\u x86-windows-static\tools\tesseract
的位置
--onefile
从中选一个不,我的问题没有答案。Tesseract工作正常,路径正确。问题是将tesseract与我的程序一起推到一个可执行文件中。Tesseract不是我可以附加到pyinstaller的jpg或文本文档,我不能附加包含另一个程序的整个文件夹。根据您的问题:“我需要引用路径”?将正确的环境路径设置为
teseract
,这不是pyinstaller
部分。您必须在目标计算机上或在Python程序中执行此操作。我的意思是在pyinstaller中引用它。因此,要使用我的程序,用户必须单独安装tesseract,对吗?“用户必须单独安装tesseract,对吗?”:这是一种可能的解决方案。据我所知,pytesseract
是一个围绕tesseract.exe/*.dll
的包装器,希望*.exe/*.dll
到位。我可以想象,pyinstaller
可以捆绑所有二进制文件,但您必须设置环境变量,以便pytesseract
能够找到并加载这些。如果您有问题,请告诉我。这是一个痛苦的想法,所以我很乐意帮助!我最终安装了vcpkg和tesseract static,但现在无法理解如何在代码中正确引用.exe和.traineddata。网站上的例子有点混乱。我的意思是,现在我们不再有tesseract.exe和traineddata,而是有一个单文件可执行脚本,所以我不能像pytesseract.pytesseract.tesseract\u cmd='E:\\tesseract OCR\\tesseract'那样执行,对吗?我们怎样才能正确地引用它呢