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

在Docker中使用Tesserocr时出现Segmentation fault问题求助

解决tesserocr在Ubuntu 14.04 Docker容器中出现Segmentation fault的问题

我之前也碰到过类似的tesseract 4.0 alpha版本在老系统环境下的段错误问题,结合你的环境配置和代码情况,给你几个实用的排查和解决方向:

1. 确认tesserocr与tesseract版本的兼容性

tesseract 4.0 alpha是早期的测试版本,和较新的tesserocr版本兼容性很差。你可以先查看当前安装的tesserocr版本:

pip show tesserocr

然后安装适配tesseract 4.0 alpha的旧版tesserocr,比如2.2.x系列:

pip install tesserocr==2.2.2

2. 重新编译安装依赖库(适配Ubuntu 14.04)

Ubuntu 14.04的系统库版本偏旧,可能和tesseract 4.0 alpha依赖的leptonica等库存在兼容性问题,建议手动编译安装对应版本的依赖:

  • 先安装编译所需的基础依赖:
apt-get update && apt-get install -y autoconf automake libtool pkg-config libpng12-dev libjpeg8-dev libtiff5-dev zlib1g-dev
  • 编译安装leptonica 1.74.4:
wget http://www.leptonica.org/source/leptonica-1.74.4.tar.gz
tar xzf leptonica-1.74.4.tar.gz
cd leptonica-1.74.4
./configure && make && make install
  • 编译安装tesseract 4.0 alpha:
wget https://github.com/tesseract-ocr/tesseract/archive/4.0.0-alpha.tar.gz
tar xzf 4.0.0-alpha.tar.gz
cd tesseract-4.0.0-alpha
./configure --with-leptonica=/usr/local/lib
make && make install
ldconfig

3. 排查代码中的参数错误

你的代码里api.GetIterator(...)的参数不完整,tesserocr的GetIterator方法需要指定页面迭代器的类型(比如文本行、单词等),正确的写法示例:

from tesserocr import PyTessBaseAPI, RIL
from PIL import Image

x = Image.open('image.jpg')
with PyTessBaseAPI() as api:
    api.SetImage(x)
    # 可以先简化测试,直接获取文本
    print(api.GetUTF8Text())
    # 如果需要迭代器,指定正确的类型
    ri = api.GetIterator(RIL_TEXTLINE)

另外,Recognize()方法在很多场景下是自动触发的,你可以先去掉这行代码,测试是否还会崩溃,逐步定位问题点。

4. 升级Docker基础镜像(最省心的方案)

Ubuntu 14.04已经停止维护多年,系统库的兼容性问题很难彻底解决。建议直接换成Ubuntu 16.04或更高版本的镜像,比如ubuntu:16.04,在新镜像中重新安装tesseract和tesserocr,能避开很多老版本系统带来的底层bug。

内容的提问来源于stack exchange,提问作者Vatsal Mishra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:27:35