Java 通过 Tess4j 实现 OCR 的简单尝试
1. 概述
1.1. 偶然刷到 Java 通过 Tess4j 实现 OCR 的例子。以前也断断续续看了一些 OCR 的文章,但总是浅尝辄止,从未上手尝试。如今看到 Java 版,终于实践了一次。这是本篇文章的由来。
1.2. Tess4j 官网介绍:用于 Tesseract OCR API 的 Java JNA 包装器。简单概括:Tesseract 是一个流行的开源 ocr 引擎,Tess4j 进行了 Java 封装,然后我们就可以在 Java 程序中访问的使用 Tesseract 进行 OCR 操作了。
1.3. 简单尝试,不适合真实场景。
2. 实现步骤
2.1. 下载 Tess4j
可以从 官网 下载源码包,也可以通过 Maven 引入。推荐方式当然是 Maven 引入,依赖如下:
1 | <!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j --> |
2.2. 下载语言包 tessdata
- 下载地址:共有三个项目tessdata_best、tessdata、tessdata_fast。
- 三个项目区别是:best 更准确但是更慢,fast 相反。看自己需求吧。
2.3. 编码实现
在项目根目录下新建目录 tessdata,放入中英语言文件,如下图:

编写测试代码,如下:
1 | package xhp.ocr; |
- 执行调试,可以顺利读取中文和英文图片。
3. 总结
3.1. 优点:实现比较简单。
3.2. 缺点:识别准确率受字体颜色、大小、清晰度、干扰度、扭曲、倾斜等度影响;对表格不能很好识别或无法定位还原表格列;
3.3. 适合读取简单清晰的图片。识别准确率可以通过自己训练数据来提高。当然真实项目场景里也不会这么简单,应该结合图片处理和更复杂的 api 去实现。
3.4. 对比了一下 Paddle OCR,个人觉得 Paddle 更好点。但是本地部署麻烦了点,如果调用在线 API 又存在网络安全、价格等因素影响。所以,还需要具体问题具体分析。
原文链接: https://xinghuipeng.pages.dev/2024/01/24/work/java/Tess4j简单尝试/
版权声明: 转载请注明出处.