Tesseract 的OSGI环境下面一直报”java.lang.RuntimeException: Need to install JAI Image I/O package.“的解决办法

1 篇文章 0 订阅

有帮助的文章:

http://stackoverflow.com/questions/22014969/tess4j-with-spring-mvc
http://stackoverflow.com/questions/22035048/imageio-jar-works-as-standalone-but-not-as-a-web-project
http://stackoverflow.com/questions/27394852/getimagewritersbyformatname-doesnt-give-proper-values

最近做一个基于 tesseract-ocr-3.02+tess4j-1.5.0+servicemix-5.4.0(OSGI的一种方案)时老是报java.lang.RuntimeException: Need to install JAI Image I/O package

参照上面的帮助文件不断的尝试,最终找到原因是需要将jai_imageio.jar 放入jre/ext目录下面(我本机的JAVA地址 C:\Program Files\Java\jdk1.8.0\jre\lib\ext)


下面是部分代码:

@Override
	public String getLocation(String filePath) throws IOException {
		BufferedImage image = null;
		 try {
           //you can either use URL or File for reading image using ImageIO
           File imagefile = new File("D:\\simplechen\\study\\osgi\\demo\\images\\1.jpg");
           image = ImageIO.read(imagefile);
           //ImageIO Image write Example in Java
           ImageIO.write(image, "jpg",new File("D:\\simplechen\\study\\osgi\\demo\\tmp\\1.jpg"));
           ImageIO.write(image, "bmp",new File("D:\\simplechen\\study\\osgi\\demo\\tmp\\1.bmp"));
           ImageIO.write(image, "gif",new File("D:\\simplechen\\study\\osgi\\demo\\tmp\\1.gif"));
           ImageIO.write(image, "png",new File("D:\\simplechen\\study\\osgi\\demo\\tmp\\1.png"));
       } catch (IOException e) {
             e.printStackTrace();
       }
		 
		 
		String capctha = "";
		getLogger().log(LogService.LOG_INFO, "从本地获取图片并解析; url=" + filePath);		
		System.err.println("you call getLocation" + filePath);
		File dataFile = bundleContext.getDataFile(filePath);
		if(dataFile.exists()){
			ImageIO.scanForPlugins();			
			Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping		
			
			System.err.println("检验环境是否支持TIFF");
			String format="tif";
			System.out.println(format);
			Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(format);
			System.out.println(readers.hasNext());
			Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");
			System.out.println(writers.hasNext());
			
			try {
				capctha = instance.doOCR(dataFile).trim();
				System.err.println("capctha is "+capctha);
			} catch (TesseractException e) {
				e.printStackTrace();
				getLogger().log(LogService.LOG_ERROR, "解析文件"+dataFile.getAbsolutePath()+"失败,原因:"+e);
			}
		} else {
			getLogger().log(LogService.LOG_ERROR, "找不到文件"+filePath);
			System.err.println("找不到文件");
		}		
		return capctha;
	}


注意:
下载 jai_imageio.jar (http://www.java2s.com/Code/Jar/j/Downloadjaiimageio11jar.htm)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值