如何解决打包的Python exe在他人电脑报TesseractNotFoundError错误
解决TesseractNotFoundError问题的方案
问题根源
你的代码硬编码了本地Tesseract的绝对路径,朋友的电脑既没有安装Tesseract-OCR软件,也不存在这个路径,因此运行时找不到tesseract.exe。另外,你用vcpkg安装的是pytesseract库,但Tesseract的核心执行文件并未被打包进生成的exe中。
方案一:让目标机器安装Tesseract
- 告知朋友下载安装Tesseract-OCR(建议选择包含英文语言包的版本)
- 修改代码,去掉硬编码路径,改为自动查找环境变量或让用户手动选择路径:
import pytesseract from tkinter import filedialog # 优先从环境变量查找,失败则让用户手动选择 try: pytesseract.pytesseract.tesseract_cmd = pytesseract.get_tesseract_version()[0] except: print("未找到Tesseract,请选择tesseract.exe的路径") tesseract_path = filedialog.askopenfilename(title="选择tesseract.exe", filetypes=[("可执行文件", "*.exe")]) if tesseract_path: pytesseract.pytesseract.tesseract_cmd = tesseract_path else: exit("未选择路径,程序退出")
方案二:将Tesseract打包进exe(无需对方单独安装)
- 找到本地的Tesseract-OCR文件夹(示例路径:
C:\Users\iunth\AppData\Local\Programs\Tesseract-OCR),将整个文件夹复制到你的Python脚本同目录下 - 修改代码中的路径为相对路径:
import os import pytesseract # 获取脚本所在目录,拼接Tesseract路径 script_dir = os.path.dirname(os.path.abspath(__file__)) pytesseract.pytesseract.tesseract_cmd = os.path.join(script_dir, "Tesseract-OCR", "tesseract.exe") - 用auto-py-to-exe重新打包:
- 在界面的Additional Files选项中,点击
Add Folder,添加复制到脚本目录的Tesseract-OCR文件夹 - 若选择
One File(单文件)模式,需修改代码适配临时解压目录:import os import sys import pytesseract # 单文件打包时,运行时文件会解压到临时目录 if getattr(sys, 'frozen', False): script_dir = sys._MEIPASS else: script_dir = os.path.dirname(os.path.abspath(__file__)) pytesseract.pytesseract.tesseract_cmd = os.path.join(script_dir, "Tesseract-OCR", "tesseract.exe")
- 在界面的Additional Files选项中,点击
- 打包完成后,将生成的exe(单目录模式需发送整个目录)发给朋友即可
额外注意事项
- 打包时需将
accept.jpg也添加到Additional Files中,避免出现找不到图片的错误 - 确保Tesseract的语言包包含你需要识别的语言(比如英文),否则识别准确率会大幅降低
内容的提问来源于stack exchange,提问作者Lyoshka
相关产品推荐
相关产品推荐

