Tess4J-OCR识别

1.介绍

1.1.什么是OCR

即Optical Character Recognition
OCR即光学字符识别,简单讲就是对图片文件中的文字进行分析识别,获取的过程。在很多生活场景中都用到,如车牌的扫描识别、身份证扫描识别、图片文本内容识别等。

第三方 OCR 服务:

  1. 百度OCR:
    • 百度提供了 OCR 的 API,你可以在百度云平台上注册并获取 API Key 和 Secret Key。然后使用 Java 的 HTTP 请求库发送图片到百度 OCR API,获取识别结果。
    • 百度OCR开发者文档
  2. 腾讯OCR:
    • 腾讯云也提供了 OCR 的 API,可以通过注册腾讯云账户并创建 OCR 服务来获取 API 密钥。然后使用 Java 发送 HTTP 请求到腾讯 OCR 服务进行文字识别。
    • 腾讯云OCR文档
  3. 阿里云OCR:
    • 阿里云同样提供了 OCR 的 API,可以注册阿里云账户并创建 OCR 服务来获取 API 密钥。通过 Java 发送 HTTP 请求到阿里云 OCR 服务进行文字识别。
    • 阿里云OCR文档

开源 OCR 库:

  1. Tesseract-OCR:
  2. JavaOCR:
    • JavaOCR 是一个 Java 实现的 OCR 库,可以用于图像中的文字识别。它可能不如一些商业服务或 Tesseract 强大,但可以作为一个简单的选项。
    • JavaOCR GitHub 仓库

1.2.Tess4J

Tesseract是一个著名的开源OCR引擎,Tess4J是对Tesseract OCR API 的Java JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式包括`TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF

2.使用

2.1.maven

1
2
3
4
5
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.1.1</version>
</dependency>

2.2.语言库下载

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

以简体中文语言库为例

  • 下载 chi_sim.traineddata 简体中文语言库,
  • 将下载的文件放在一个文件夹下面

2.3.测试

1
2
3
4
5
6
7
8
9
10
//创建实例
Tesseract tesseract = new Tesseract();
//设置语言库路径
tesseract.setDatapath("D:\\tessdata");
//设置语言 简体中文
tesseract.setLanguage("chi_sim");
//要识别图片
File file = new File("D:\\tess.png");
String result = tesseract.doOCR(file);
System.out.println("识别的结果为:" + result.replaceAll("\\r|\\n","-"));

image-20231215163353129