一.什么是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 documentationhttps://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); } } |
识别的结果