一.什么是OCR
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程
| 方案 | 说明 |
|---|---|
| 百度OCR | 收费 |
| Tesseract-OCR | Google维护的开源OCR引擎,支持Java,Python等语言调用 |
| Tess4J | 封装了Tesseract-OCR ,支持Java调用 |
二.Tesseract-OCR 的特点
-
Tesseract支持UTF-8编码格式,并且可以“开箱即用”地识别100多种语言
-
Tesseract支持多种输出格式:纯文本,hOCR(HTML),PDF等
-
官方建议,为了获得更好的OCR结果,最好提供给高质量的图像
-
Tesseract进行识别其他语言的训练,具体的训练方式请参考官方提供的文档:Tesseract User Manual | tessdocTesseract documentation
https://tesseract-ocr.github.io/tessdoc/
三.使用案例
1.导入相关的依赖
XML
1 2 3 4 5 | <dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.1.1</version>
</dependency>
|
2.导入中文字体库
地址: tessdata.zip - 蓝奏云文件大小:1.6 M|
https://wwvc.lanzouj.com/iuPhc1h7j46f
3.编写测试类进行测试
待识别的图片

测试程序
JAVA
package com.atguigu.gulimall.search.utils;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import java.io.File;
/**
* @author Jason Gong
* @version 1.0
* @Date 2023/12/8
* @Description
*/
public class Main {
/**
* 识别图片中的文字
*
* @param args
*/
public static void main(String[] args) throws TesseractException {
//创建实例
Tesseract tesseract = new Tesseract();
//设置字体库的路径
tesseract.setDatapath("C:\\Users\\c2405\\Desktop\\tessdata");
//设置语言
//字体库为chi_sim.traineddata,语言取.前面的内容,即文件名
//简体中文
tesseract.setLanguage("chi_sim");
//识别图片
String ocr = tesseract.doOCR(new File("C:\\Users\\c2405\\Desktop\\apic21002.jpg"));
//打印识别的结果
//打印的时候可以去除回车和tab空格
//System.out.println(ocr.replaceAll("\\n|\\r","-"));
System.out.println(ocr);
}
}
|
识别的结果



















