文章目录
- 1. 背景介绍
- 2. 方案选型
- 3. 方案落地
- 3.1 示例工程
- 3.2 搭建开发环境
- 3.2.1 windows 10
- 3.2.2 mac
- 3.3 搭建部署环境
- 4. 参考资料
1. 背景介绍
网络上介绍 tesseract 做 OCR 文字识别的文章较少,且时间久远,实际落地时难免出现纰漏,笔者也是走了不少弯路,故梳理一份最新的文档,方便后人查阅。
2. 方案选型
刚开始有多种方向,考虑到易用性和数据安全,最终采用 tesseract,下面罗列选型的过程
-
OpenCV
计算机视觉领域的老大哥,原生提供 C++ 接口,也可以通过引入 :opencv:4.5.1-2 支持 Java对接,然而我没有找到专门用于 OCR 的接口
-
Tesseract
是一款专业的 OCR 引擎,尽管也是 C++ 编写的,但配合 .tess4j:tess4j:4.5.5 可以提供简洁的 Java API
-
腾讯云文字识别 OCR(入口)
成熟的 API,不仅能做到 OCR,还能对内容进行分词,如名片、收货人信息等,如果对数据不敏感,建议对接,效果好而且省时省力
3. 方案落地
3.1 示例工程
文末提供下载
-
新建 maven 工程
-
引入依赖
<dependency> <groupId>.tess4j</groupId> <artifactId>tess4j</artifactId> <version>4.5.5</version> </dependency>
-
使用 Tesseract API 完成文本识别
// 创建实例 Tesseract instance = new Tesseract(); // 设置语言 instance.setLanguage("chi_sim"); // 设置语言包路径 instance.setDatapath("src/main/resources/tessdata"); // 设置文本文件 File file = new File("src/main/resources/sample/"); try { // 文本识别 String result = instance.doOCR(file); System.out.println(result); } catch (TesseractException e) { e.printStackTrace(); }
3.2 搭建开发环境
3.2.1 windows 10
-
安装 tesseract-ocr
下载地址 /tesseract/tesseract-ocr-w64-setup-v5.0.0.
其他版本可以查看 /tesseract/
安装过程中一直点下一步,建议取消语言包选项,后面手动下载
-
配置环境变量【可选】
- 在 Path 追加【C:\Program Files\Tesseract-OCR】,方便任意处调用 tesseract 命令
- 新建 TESSDATA_PREFIX,内容为【C:\Program Files\Tesseract-OCR】,用于加载语言包
- Tips: 此处不建议使用环境变量,建议将语言包放在项目的 resources 资源文件夹下,便于移植
-
检验安装
cmd 窗口输入 tesseract -v,能输出版本信息即安装成功
-
语言包下载地址
中文 /mirrors/tesseract-ocr/tessdata/-/raw/master/chi_sim.traineddata
英文 /mirrors/tesseract-ocr/tessdata/-/raw/master/
数字 /mirrors/tesseract-ocr/tessdata/-/raw/master/
3.2.2 mac
笔者电脑为 mba2020 m1
-
安装软件主体
brew install tesseract
-
安装语言包【可选】
建议单独下载语言包,并放在项目的 resources 资源文件夹下
brew install tesseract-langs
-
检验安装
tesseract -v
-
卸载(如果你需要)
# 从第三方仓库获取模块 brew tap beeftornado/rmtree # 删除 tesseract 及其所有依赖 brew rmtree tesseract # 清理不需要的版本极其安装包缓存 brew cleanup
-
处理异常
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': dlopen(libtesseract.dylib, 9): image not found dlopen(libtesseract.dylib, 9): image not found dlopen(/Users/linjingcheng/Library/Frameworks/tesseract.framework/tesseract, 9): image not found dlopen(/Library/Frameworks/tesseract.framework/tesseract, 9): image not found dlopen(/System/Library/Frameworks/tesseract.framework/tesseract, 9): image not found Native library (darwin-x86-64/libtesseract.dylib) not found in resource path
参考 /questions/21394537/tess4j-unsatisfied-link-error-on-mac-os-x
简单来说就是在 mac 下 tess4j 这个包少了 darwin-x86-64/(tess4j 4.5.5 之前是 darwin/),需要自己手动添加进去,或者按照 3.3 的方式进行操作
3.3 搭建部署环境
案例:在windows上项目是可以正常运行的,部署到Linux上后,运行报异常,异常内容为:Unable to load library ‘tesseract’: Native library (linux-x86-64/libtesseract)
报错原因就是项目无法加载库资源文件 libtesseract(在linux上是.so文件,windows是.dll文件)
-
安装编译环境:gcc gcc-c++ make
yum install gcc gcc-c++ make
-
通过yum安装 autoconf automake libtool 和 libjpeg-devel libpng-devel libtiff-devel zlib-devel 等 7 个工具
yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel
-
安装依赖的Leptonica库(建议使用 su root 切换到root用户下安装,避免编译过程中的权限不足问题)
wget /source/leptonica-1.81. tar -xzvf leptonica-1.81. cd leptonica-1.81.1/ ./configure # tips: 需要几分钟,请耐心等待 make && make install
-
安装Tesseract-OCR(建议使用 su root 切换到root用户下安装,避免编译过程中的权限不足问题)
wget /tesseract-ocr/tesseract/archive/refs/tags/4.1. tar -xzvf tesseract-4.1. cd tesseract-4.1.0/ ./ # 此步可能会报错,可以看第五步 ./configure make && make install sudo ldconfig
-
解决【configure: error: Leptonica 1.74 or higher is required. Try to install libleptonica-dev package.】问题
# 加入环境变量 vim /etc/profile export LD_LIBRARY_PATH=$LD_LIBRARY_PAYT:/usr/local/lib export LIBLEPT_HEADERSDIR=/usr/local/include export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig # 刷新配置 source /etc/profile # 重新安装 ./ ./configure # tips: 需要十分钟左右,请耐心等待 make && make install sudo ldconfig
-
复制 tess4j 要的 linux 依赖库链接【重要】
cp /usr/local/lib/*.so.* /usr/lib64/
-
下载语言包(预训练文件):中文、英文、数字【可选】
cd /usr/local/share/tessdata # 原站点未加速,几乎不能下载 # wget /tesseract-ocr/tessdata/blob/master/chi_sim.traineddata # wget /tesseract-ocr/tessdata/blob/master/ # wget /tesseract-ocr/tessdata/blob/master/ wget /mirrors/tesseract-ocr/tessdata/-/raw/master/chi_sim.traineddata wget /mirrors/tesseract-ocr/tessdata/-/raw/master/ wget /mirrors/tesseract-ocr/tessdata/-/raw/master/
-
防止找不到语言包【可选】
# 加入环境变量 echo "export TESSDATA_PREFIX=/usr/local/share/tessdata" >> /etc/profile # 刷新配置 source /etc/profile
-
安装完成测试
# 查看版本 tesseract -v # 执行命令识别图片中的文字并保存进本地的文本中 tesseract reuslt -l chi_sim
4. 参考资料
- 示例项目 /download/coder1994/21698394
- Linux系统安装及部署tess4j项目(CentOS 7为例) /weixin_51754359/article/details/109452233
- Tesseract 文档地址 /tesseract-ocr/tessdoc
- tess4j 官网 /