简介
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。
Tess4J是对Tesseract OCR API.的Java JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式:TIFF,JPEG,GIF,PNG,BMP,JPEG,and PDF
Tess4J API 提供的功能:
直接识别支持的文件
识别图片流
识别图片的某块区域
将识别结果保存为 TEXT/ HOCR/ PDF/ UNLV/ BOX
通过设置取词的等级,提取识别出来的文字
获得每一个识别区域的具体坐标范围
调整倾斜的图片
裁剪图片
调整图片分辨率
从粘贴板获得图像
克隆一个图像(目的:创建一份一模一样的图片,与原图在操作修改上,不相 互影响)
图片转换为二进制、黑白图像、灰度图像
反转图片颜色
创建maven项目
pom中引用jar包
net.sourceforge.tess4j
tess4j
4.5.1
下载语言库文件
其中chi_sim.traineddata为中文语言库,eng.traineddata为英文语言库。
在任意地方创建一个文件夹tessdata,将下载的chi_sim.traineddata 和 eng.traineddata语言包存放在该目录下,也可以直接存放到自己项目的resources/tessdata目录下。
PS:后期的OCR样本训练,实际上就是制作生成自己的语言库文件
代码示例
//识别图片的路径(修改为自己的图片路径)
String path = "D:\\test.png";
File file= newFile(path);
ITesseract instance= newTesseract();//获得Tesseract的文字库,设置语言库位置
URL tessdataPath = ClassLoader.getSystemResource("tessdata");
instance.setDatapath(tessdataPath.getPath().substring(1));//chi_sim :简体中文, eng:英文 根据需求选择语言库
instance.setLanguage("eng");
String result= null;try{long startTime =System.currentTimeMillis();
result=instance.doOCR(file);long endTime =System.currentTimeMillis();
System.out.println("Time is:" + (endTime - startTime) + " 毫秒");
}catch(TesseractException e) {
e.printStackTrace();
}
System.out.println("result: ");
System.out.println(result);
测试图片:
结果:
参考: