实战开源 OCR 工具 tesseract 的安装与使用

2022-03-05 18:37:34   最后更新: 2022-03-05 18:38:05   访问数量:135




 

OCR 是 Optical Character Recognition (光学字符识别)的缩写,指的是通过检测图像,从而识别出文字的技术。

 

经过几十年的发展,如今 OCR 技术已经非常成熟,本文我们就来介绍由惠普公司开源的 OCR 算法组件 tesseract 的安装和使用。

 

 

在各个平台上都有着成熟的包管理机制,利用包管理机制直接安装即可,例如在 mac 上,你需要执行下面两个命令:

 

brew install tesseract

brew install tesseract-lang

 

第一个命令是安装 tesseract 命令执行所需的组件,第二个命令则是安装 tesseract 所需的语言包。

 

在 mac 上,也许你需要安装 qt、python3.9 等等基础依赖,只要按提示安装即可。

 

其他环境,例如 Ubuntu、Debian、CentOS 等系统中,只要执行对应的包管理命令即可。

 

例如在 Ubuntu 系统下,只需执行:

 

apt-get install tesseract-ocr-all

 

 

安装 tesseract 后,通过 tesseract --help 命令可以看到说明。

 

执行以下命令即可:

 

tesseract imagename outputbase [options...] [configfile...]

 

例如:

 

tesseract ~/Downloads/temp.jpg ~/Downloads/temp -l chi_sim

 

-l 参数用来指定识别的文本是哪种语言,如果是英语可以传递 -l eng.

 

识别结果就在第二个参数 ~/Downloads/temp.txt 中记录了识别的结果。

 

 

安装上述依赖后,就可以通过代码调用了,最简单的就是通过执行系统命令直接调用 tesseract 命令,这里就不赘述了。

 

下面我们来看看如何通过 java SDK 调用 tesseract 实现 OCR 识别。

 

4.1 添加 maven 依赖

 

<dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>2.0.1</version> <exclusions> <exclusion> <groupId>com.sun.jna</groupId> <artifactId>jna</artifactId> </exclusion> </exclusions> </dependency>

 

 

4.2 下载语言包

 

在官方文档网站找到需要识别的语言包:

 

https://tesseract-ocr.github.io/tessdoc/Data-Files

 

放到某个目录下, 这里我放到 /opt/tesseract 目录下。

 

4.3 编写代码调用

 

public class TessTest { public static void main(String[] args) { ITesseract instance = new Tesseract(); File imageFile = new File("/data/images/a.jpg"); instance.setDatapath("/opt/tesseract"); instance.setLanguage("chi_sim"); try { long time = System.currentTimeMillis(); String result = instance.doOCR(imageFile); System.out.println(result); System.out.println("timeout: " + (System.currentTimeMillis() - time)); } catch (TesseractException e) { System.out.println(e.getMessage()); } } }

 

 

4.4 遇到的问题

 

执行上述代码,报错如下:

 

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (darwin/libtesseract.dylib)

 

这是因为在 tess4j 的 jar 包中没有包含 darwin/libtesseract.dylib 组件,可以通过升级 jar 包到 5 以上,或是使用其他平台。

 

解决办法如下:

 

cd ~/.m2/repository/net/sourceforge/tess4j/tess4j/2.0.1

mkdir darwin

jar uf tess4j-2.0.1.jar darwin

cp /usr/local/opt/lib/libtesseract.5.dylib darwin/libtesseract.dylib

jar uf tess4j-2.0.1.jar darwin/libtesseract.dylib

 

再次执行即可。

 

 

 

 

 

https://guides.library.illinois.edu/c.php?g=347520&p=4121425

 

[java - Tess4j unsatisfied link error on mac OS X - Stack Overflow](https://stackoverflow.com/questions/21394537/tess4j-unsatisfied-link-error-on-mac-os-x)

 

[Traineddata Files for Version 4.00 + | tessdoc](https://tesseract-ocr.github.io/tessdoc/Data-Files)

 

[python 3.x - How do I install a new language pack for Tesseract on Windows - Stack Overflow](https://stackoverflow.com/questions/63048908/how-do-i-install-a-new-language-pack-for-tesseract-on-windows)

 

[tesseract-lang — Homebrew Formulae](https://formulae.brew.sh/formula/tesseract-lang)

 

 

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤

 

机器学习

 






开源      机器学习      tesseract      ocr      图像处理     


京ICP备2021035038号