前言:
眼前看官们对“c语言getimage”都比较关切,你们都需要剖析一些“c语言getimage”的相关知识。那么小编也在网摘上搜集了一些有关“c语言getimage””的相关资讯,希望我们能喜欢,兄弟们快快来了解一下吧!在工作中,我们有时候会遇到识别图片里面的文字信息,比如姓名,验证码等,这里就要涉及一个OCR(Optical Character Recognition)的概念,即光学字符识别,简单讲就是对图片文件中的文字进行分析识别,获取的过程。
Tesseract是一个著名的开源OCR引擎,初期是由惠普实验室研发,后期开源,由Google改进优化升级。
Tess4J是对Tesseract OCR API 的Java JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式包括TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF。
下面进行简单的使用吧。
1、新建一个maven项目,引入依赖
<dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>4.4.0</version></dependency>2、准备测试代码
public class TestTess4jOCR { //语言库类型中文:chi_sim,数字加英文:eng private static final String LANGUAGE = "eng"; //语言库位置,里面目前只放了:chi_sim.traineddata(中文),eng.traineddata(英文) private static final String DATA_PATH = "F:\\Workspace\\eclipse_workspace\\tessdata"; public static void main(String[] args) { byte[] imageByte =TestTess4jOCR.getImageBytes("F:\\2.jpg"); TestTess4jOCR.testDoOCR_ImageByte(imageByte); } public static void testDoOCR_ImageByte(byte[] imageByte) { try { InputStream sbs = new ByteArrayInputStream(imageByte); BufferedImage img = ImageIO.read(sbs); ITesseract instance = new Tesseract(); //设置语言库所在的文件夹位置,最好是绝对的,不然加载不到就直接报错了 instance.setDatapath(DATA_PATH); //设置使用的语言库类型:chi_sim,eng 中文简体 instance.setLanguage(LANGUAGE); String result = instance.doOCR(img); System.out.println("扫描的文本:"+result); } catch (Exception e) { System.err.println("扫描图片文本错误:"+e); } } public static byte[] getImageBytes(String path) { //图片转化为二进制 byte[] imageBytes = null; try (FileInputStream fileInputStream = new FileInputStream(new File(path));) { imageBytes = new byte[fileInputStream.available()]; fileInputStream.read(imageBytes); } catch (IOException e) { e.printStackTrace(); } return imageBytes; } }
上面可以看到有一个语言库的概念。中文一般用:chi_sim.traineddata,数字和英文一般用eng.traineddata,更多tessdata语言库下载地址。
这里下载了chi_sim.traineddata和eng.traineddata用来测试。
3、测试
通过修改LANGUAGE和图片路径进行测试
第一组测试,数字识别:
第二组测试,中文识别:
第三组测试,图片验证码:
感觉功能好强大,完全不需要调用腾讯百度的接口!咱再试试
这,好吧,毕竟肯定没有付钱的好,当然我们还可以进行针对性的训练,当然这是后话!
标签: #c语言getimage #java识别文字 #java识别文字在图片中的位置 #java识别文字在图片中的位置怎么设置 #java识别文字在图片中的位置怎么设置出来