You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku服务器的Pytesseract中使用自定义.traineddata文件

Heroku环境Pytesseract使用自定义训练模型解决方案

前置准备

先将你持有的.traineddata文件存入Django项目根目录下新建的tessdata文件夹中,如有需要可同时将官方eng.traineddata也放入该目录,将整个文件夹提交到Git仓库。

步骤1:配置Heroku运行依赖

  • 进入Heroku项目后台的「Settings」页,找到「Buildpacks」板块,按顺序添加两个buildpack:
    1. Heroku官方Apt buildpack
    2. Heroku官方Python buildpack
  • 在项目根目录新建Aptfile文件,写入以下内容,部署时Heroku会自动安装Tesseract运行环境:
    tesseract-ocr
    libtesseract-dev
    

步骤2:配置TESSDATA_PREFIX参数

有两种配置方式,建议同时配置避免不生效:

  1. 后台环境变量配置:在Heroku项目后台「Settings」的「Config Vars」板块新增变量:
    • 变量名:TESSDATA_PREFIX
    • 变量值:/app/tessdata/
      (Heroku部署后项目代码默认存放在/app目录下,对应你仓库里的tessdata文件夹路径就是/app/tessdata/)
  2. 代码动态配置:在调用Pytesseract的代码块前增加路径配置,兼容本地和线上环境:
    import os
    import pytesseract
    
    # 指定Heroku上Tesseract的执行文件路径
    pytesseract.pytesseract.tesseract_cmd = "/usr/bin/tesseract"
    # 动态设置TESSDATA_PREFIX,路径根据你的tessdata文件夹位置调整即可
    os.environ["TESSDATA_PREFIX"] = os.path.join(
        os.path.dirname(os.path.abspath(__file__)), 
        "../tessdata"
    )
    

步骤3:调用自定义模型

调用image_to_string时,lang参数填写你自定义训练文件的前缀即可(训练文件名为xxx.traineddata,则lang参数为xxx):

# 仅使用自定义字体模型
text = pytesseract.image_to_string(待识别图片对象, lang="你的自定义模型前缀")
# 同时使用自定义模型和官方英文模型
text = pytesseract.image_to_string(待识别图片对象, lang="你的自定义模型前缀+eng")

问题排查

如果运行提示找不到训练数据,可打印os.listdir(os.environ.get("TESSDATA_PREFIX"))检查目标路径下是否存在你的.traineddata文件,确认文件名拼写、大小写完全匹配lang参数。


内容的提问来源于stack exchange,提问作者Jan van Dongen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:51:02