前言

某些应用需要进行图片内容识别,需要构建tesseract的运行环境。

资源准备

下载相关资源:
tesseract url:https://github.com/tesseract-ocr/tesseract/

leptonica url:http://www.leptonica.org/

语言包的下载:https://github.com/tesseract-ocr/tessdata

在这里插入图片描述

软件和语言包已上传到百度网盘:
链接:https://pan.baidu.com/s/1mevX728H0GuqoZFiTwrvfA?pwd=paco
提取码:paco

搭建tesseract基础环境镜像

  1. 编写Dockerfile
FROM mamohr/centos-java
MAINTAINER lengcz<lcz0710@163.com>	  

# 说明	  
COPY readme.txt /usr/local/readme.txt  

# 环境变量(tesseract)
ENV LD_LIBRARY_PATH="/usr/local/lib" \
    LIBLEPT_HEADERSDIR="/usr/local/include" \
    PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
	
# 安装tesseract环境
ADD   tesseract-4.1.3.tar.gz /
ADD   leptonica-1.80.0.tar.gz /

RUN   yum -y install file automake libicu-devel libpango1.0-dev libcairo-dev libjpeg-devel libpng-devel libtiff-devel zlib-devel libtool gcc-c++ make \
      && cd /leptonica-1.80.0 && ./configure && make && make install \
      && cd /tesseract-4.1.3 && ./autogen.sh && ./configure && make && make install \
      && rm -rf /leptonica-1.80.0 /tesseract-4.1.3
	  
# 复制语言包	  
COPY /tessdata /usr/local/share/tessdata	
	  
# 时区设置
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
  1. 上传到centos服务器
    备注:readme.txt是你构建的该镜像说明文件,无关紧要,可有可无。

在这里插入图片描述
语言包(这里包含了中文英文)
在这里插入图片描述

  1. 构建镜像
docker build -t lengcz/tessocr2:1.0 .

在这里插入图片描述

将镜像上传到dockerhub

服务器如果在国内,下载速度会比较慢。
lengcz/tesseract-ocr-environment 仓库是公开的
仓库地址:https://hub.docker.com/repository/docker/lengcz/tesseract-ocr-environment
命令

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname

操作
在这里插入图片描述

在这里插入图片描述

将镜像发布到阿里云dockerhub上

该镜像为开源镜像,可使用。下载速度很快。

docker run -it  --name mytesseract01 registry.cn-guangzhou.aliyuncs.com/lengcz/tesseract-ocr-environment:1.0  /bin/bash

运行该镜像

1. 下载语言包(需要新语种才需要执行)

(前面构建镜像时已经包含了中文和英文了,如果需要其它语言,则需要下载;否则不需要执行此步骤)
由于tesseract是需要语言包的,所以需要下载语言包。

下载地址:https://github.com/tesseract-ocr/tessdata

将语言包下载存放到主机/usr/tessdata目录下
在这里插入图片描述

需要识别中文,需要下载中文相关的包
在这里插入图片描述

建议先把中文和英文的包都安装了
在这里插入图片描述

2. 运行

#(不需要额外的语言包)以交互的方式运行该镜像,并进入容器(默认包含了中文和英文,也识别数字,没有额外的情况,不需要进行挂载)
docker run  -it  --name mytesseract01 lengcz/tesseract-ocr-environment:1.0 /bin/bash
#(需要额外的语言包)以交互的方式运行该镜像,并进入容器(以挂载的方式运行),如果需要额外的语言包,则需要使用文件挂载,将需要被加载的语言包挂载到容器内
docker run  -it -v /usr/tessdata:/usr/local/share/tessdata --name mytesseract01 lengcz/tesseract-ocr-environment:1.0 /bin/bash
#查看tesseract的版本
tesseract -v
#查看已安装的语言包
tesseract --list-langs

在这里插入图片描述

使用这个镜像

  • dockerhub镜像
docker run  -it  --name mytesseract01 lengcz/tesseract-ocr-environment:1.0 /bin/bash
  • 阿里云容器镜像
docker run  -it  --name mytesseract01 registry.cn-guangzhou.aliyuncs.com/lengcz/tesseract-ocr-environment:1.0 /bin/bash

关于遇到的问题

问题:
configure: error: Your compiler does not have the necessary C++17 support! C
其实这个过程遇到的问题很麻烦,主要是环境问题,不同版本的tesseract-ocr需要的基础环境也不同,失败的概率比较大,而且执行时间也很慢。
解决办法:
http://www.manongjc.com/detail/24-egmohotmsezzmof.html

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

当然如果实在遇到问题千奇百怪,可以直接使用我提交到dockerhub的公开镜像。

lengcz/tesseract-ocr-environment

传送门

基于本章构建的基础镜像,开发springboot代码实现图片转文本。
springboot框架(5):ocr图片转文本

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐