OCR功能实现
# JAVA 实现 OCR 功能
# 可选择的 OCR 引擎
Tesseract OCR 与 Tess4J:tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository) (opens new window)
spire.ocr:Spire.OCR for Java | 专业的图文识别组件,用以读取图片格式中的文本 (opens new window)
百度 ocr api:文字识别OCR (opens new window)
# Tesseract 示例
在 Java 中实现 OCR(光学字符识别)功能,通常需要依赖一些第三方库。
- Tesseract 是一个非常流行且强大的开源 OCR 引擎,可以用来从图像中提取文本信息。
- 你可以通过 Tesseract 的 Java 绑定库 Tess4J 来在 Java 应用程序中使用 Tesseract。
# 1. 下载和安装 Tesseract
首先,你需要下载并安装 Tesseract OCR 引擎。Tesseract 支持多种操作系统,包括 Windows、Linux 和 macOS。
# 在 Windows 上安装 Tesseract
下载 Tesseract:
- 访问 Tesseract at UB Mannheim (opens new window) 或 Tesseract at GitHub (opens new window)。
- 下载适合你操作系统的安装包。例如,对于 Windows,你可以下载
tesseract-ocr-w64-setup-v5.0.0-20220101.exe
。
安装 Tesseract:
- 运行下载的安装程序并按照提示进行安装。
- 安装过程中,记住 Tesseract 的安装路径(通常是
C:\Program Files\Tesseract-OCR
)。
设置环境变量(可选但推荐):
- 将 Tesseract 的安装路径添加到系统的
PATH
环境变量中。这样你可以在命令行中直接使用tesseract
命令。
- 将 Tesseract 的安装路径添加到系统的
# 在 Linux 上安装 Tesseract
sudo apt-get update
sudo apt-get install tesseract-ocr
2
# 在 macOS 上安装 Tesseract
brew install tesseract
# 2. 添加 Tess4J 依赖
如果你使用 Maven 或者 Gradle 项目,可以添加 Tess4J
的依赖项。
# Maven
在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.0.0</version>
</dependency>
2
3
4
5
# Gradle
在 build.gradle
文件中添加以下依赖:
dependencies {
implementation 'net.sourceforge.tess4j:tess4j:5.0.0'
}
2
3
# 3. 编写 Java 代码实现 OCR 功能
以下是一个简单的示例,展示如何使用 Tess4J 从图片中提取文本信息:
import net.sourceforge.tess4j.*;
import java.io.File;
public class OCRExample {
public static void main(String[] args) {
try {
// 创建 Tesseract 实例
ITesseract instance = new Tesseract();
// 设置 Tesseract 数据路径(包含训练数据文件)
// 如果你在 PATH 环境变量中设置了 Tesseract,这一步可以省略
// 否则,你需要指定 Tesseract 的安装路径
instance.setDatapath("path/to/tessdata");
// 设置识别的语言
// 例如中文简体 (chi_sim) 或英文 (eng)
instance.setLanguage("chi_sim");
// 读取图片文件
File imageFile = new File("path/to/your/image.png");
// 执行 OCR 识别
String result = instance.doOCR(imageFile);
// 输出结果
System.out.println(result);
// 存储或处理结果
processResult(result);
} catch (TesseractException e) {
e.printStackTrace();
}
}
private static void processResult(String result) {
// 在这里处理 OCR 结果,例如存储到数据库
System.out.println("Processing OCR result: " + result);
// 你可以在这里添加更多的逻辑,例如解析特定字段、验证数据等
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 4. 处理多语言支持
Tesseract 支持多种语言,你可以通过下载相应的语言数据文件来扩展其支持范围。例如,要支持中文简体,你需要下载 chi_sim.traineddata
文件,并将其放在 tessdata
目录下。
# 下载语言数据文件
访问 Tesseract Language Data (opens new window) 页面,下载你需要的语言数据文件。
# 放置语言数据文件
将下载的语言数据文件(例如 chi_sim.traineddata
)放置在 Tesseract 的 tessdata
目录下。例如,如果你的 Tesseract 安装路径是 C:\Program Files\Tesseract-OCR
,则将文件放在 C:\Program Files\Tesseract-OCR\tessdata
目录下。
# 5. 步骤小结
- 下载并安装 Tesseract:确保 Tesseract 安装在你的系统上,并且路径已添加到环境变量中。
- 添加 Tess4J 依赖:在你的 Java 项目中添加 Tess4J 依赖。
- 编写 Java 代码:使用 Tess4J API 从图片中提取文本信息。
通过这些步骤,你可以在 Java 应用程序中实现 OCR 功能。
# RapidOCR 示例
RapidOCR 是一个开源的 OCR 库,支持 Windows 和 Linux 部署。
实现步骤:
添加依赖:在项目中添加 RapidOCR 的依赖。
<dependency> <groupId>io.github.mymonstercat</groupId> <artifactId>rapidocr</artifactId> <version>0.0.7</version> </dependency>
1
2
3
4
5编写 OCR 代码:使用 RapidOCR 进行文字识别。
import com.example.paddleocr.PaddleOcr; public class OCRDemo { public static void main(String[] args) { String temPath = "E:\\cstp3.png"; ParamConfig paramConfig = ParamConfig.getDefaultConfig(); paramConfig.setDoAngle(true); paramConfig.setMostAngle(true); InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4); // 开始识别 OcrResult ocrResult = engine.runOcr(temPath, paramConfig); System.out.println("识别内容" + ocrResult.getStrRes().replace("\n", " ")); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14