引言
如果程序中需要实现一个提取图片中的文字功能,并且不想为此投入费用,该如何实现?
下面介绍的这种方法可以帮你轻松实现。
Linux安装Tesseract-OCR识别
Tesseract简介
Tesseract是用于各种操作系统的光学字符识别引擎。它是免费软件,在Apache许可证下发布。最初由惠普在 1980 年代作为专有软件开发,于 2005 年作为开源发布,自 2006 年以来一直由 Google 赞助开发,2006年,Tesseract被认为是最准确的开源OCR引擎之一。
Leptonica:
Leptonica是一个开源库,包含广泛用于图像处理和图像分析应用程序的软件。 Leptonica的官方github存储库是:danbloomberg/Leptonica。
该文档基于CentOS7.6编写(CentOS7.9也可以正常使用)
1 通过yum安装Leptonica所需的依赖包
yum -y install libjpeg* libjpeg-devel libpng* libpng-devel freetype* gd* giflib* libtiff* libtiff-devel zlib* automake libtool centos-release-scl
2 安装gcc8环境
Leptonica需要gcc8环境,一般操作系统自带的gcc不能满足要求
yum install devtoolset-8-gcc*
3 切换当前会话中gcc版本为8
要切换到将 gcc 和 g++ 默认为此 GCC 版本的 shell,请使用:
scl enable devtoolset-8 -- bash
4 查看gcc版本
gcc -v
显示结果如下
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-8/root/usr --mandir=/opt/rh/devtoolset-8/root/usr/share/man --infodir=/opt/rh/devtoolset-8/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-8.3.1-20190311/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)
5 下载leptonica
安装tesseract依赖于leptonica,所以这里先下载leptonica
方法1: 通过leptonica官网下载
http://www.leptonica.org/download.html
方法2: 通过github下载
https://github.com/DanBloomberg/leptonica/archive/refs/tags/1.82.0.tar.gz
6 下载tesseract-5.0.0.tar.gz
https://github.com/tesseract-ocr/tesseract/archive/refs/tags/5.0.0.tar.gz
7 解压文件
tar -xvf leptonica-1.82.0.tar.gz
tar -xvf tesseract-5.0.0.tar.gz
8 安装leptonica环境
cd leptonica-1.82.0
./autogen.sh
./configure && make -j8 && make install
9 配置环境变量
vi /etc/profile
在文件结尾添加环境信息如下
export LD_LIBRARY_PATH=/usr/local/lib
export LIBLEPT_HEADERSDIR=/usr/local/include
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LIBRARY_PATH=/usr/local/lib
export LC_ALL=C
export TESSDATA_PREFIX=/usr/local/share/tessdata
执行以下命令使配置生效
source /etc/profile
10 安装tesseract-ocr
cd ../tesseract-5.0.0
./autogen.sh
./configure && make -j8 && make install
注:
如果报错:configure: error: Your compiler does not have the necessary C++17 support! Cannot proceed.
则检查之前的gcc环境是否切换到gcc8
11 测试是否安装成功,执行ldconfig
ldconfig
提示如下信息
ldconfig: /lib64/libtesseract.so.5 is not a symbolic link
ldconfig: /lib64/liblept.so.5 is not a symbolic link
如果提上上述信息,则执行下面的命令创建链接
ln -sf /lib64/libtesseract.so.5 /lib64/libtesseract.5.so
ln -sf /lib64/liblept.so.5 /lib64/liblept.5.so
重新执行ldconfig
验证
12 查看版本
tesseract --version
显示结果如下:
tesseract 5.0.0
leptonica-1.82.0
libjpeg 6b (libjpeg-turbo 1.2.90) : libpng 1.5.13 : libtiff 4.0.3 : zlib 1.2.7
Found AVX2
Found AVX
Found FMA
Found SSE4.1
Found OpenMP 201511
13 下载语言包
语言包下载地址:https://github.com/tesseract-ocr/tessdata_best/archive/refs/tags/4.1.0.tar.gz
解压
cd /soft
tar -xvf tessdata_best-4.1.0.tar.gz
将下载的语言包复制到/usr/local/share/tessdata
cd tessdata_best-4.1.0
cp chi* /usr/local/share/tessdata
cp eng* /usr/local/share/tessdata
功能验证
随便找一张图片进行测试,这里以下面这张test.png
为例
上传test.png
到服务器任意位置,这里上传到/pic
为例进行说明,在任意位置执行如下命令
tesseract /pic/test.png test_out -l chi_sim
参数说明:
- test.png : 是要识别的文件名
- test_out : 是识别后的文本(默认会会在当前目录下生成test_out.txt)
- chi_sim : 用到的语言包,如果需要用到多个语言包,中间以空格隔开
验证结果如下
可以发现,从图片中提取到的文字功能还是不错的。
如果该文章有帮助到您,请点赞 支持,谢谢!
点关注防走丢,有任何疑问,欢迎在评论中留言。