tesseract-ocr识别字符

 
package com.csdn.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.jdesktop.swingx.util.OS;
public class OCR {
 private final String LANG_OPTION = "-l";
 private final String EOL = System.getProperty("line.separator");
 private String tessPath = "C:\\Program Files\\Tesseract-OCR";
 public String recognizeText(File imageFile, String imageFormat)
   throws Exception {
  File tempImage = ImageIOHelper.createImage(imageFile, imageFormat);// 调用ImageIOHelper类中createImage()方法

  File outputFile = new File(imageFile.getParentFile(), "output");

  StringBuffer strB = new StringBuffer();

  List<String> cmd = new ArrayList<String>();

  if (OS.isWindowsXP()) {
             cmd.add(tessPath + "//tesseract");
  } else if (OS.isLinux()) {
              cmd.add("tesseract");
  } else {
               cmd.add(tessPath + "//tesseract");
  }
  cmd.add("");
  cmd.add(outputFile.getName());
  cmd.add(LANG_OPTION);
  cmd.add("chi_sim");

  ProcessBuilder pb = new ProcessBuilder();
  pb.directory(imageFile.getParentFile());
  cmd.set(1, tempImage.getName());
  pb.command(cmd);
  pb.redirectErrorStream(true);
  Process process = pb.start();// 在这里直接就抛异常了,请高手指点指点
  int w = process.waitFor();
  tempImage.delete();
  if (w == 0) {
   BufferedReader in = new BufferedReader(new InputStreamReader(
     new FileInputStream(outputFile.getAbsolutePath() + ".txt"), "UTF-8"));
   String str;
   while ((str = in.readLine()) != null) {
    strB.append(str).append(EOL);
   }
   in.close();
  } else {
   String msg;
   switch (w) {
   case 1:
    msg = "Errors accessing files. There may be spaces in your image's filename.";
    break;
   case 29:
    msg = "Cannot recognize the image or its selected region.";
    break;
   case 31:
    msg = "Unsupported image format.";
    break;
   default:
    msg = "Errors occurred.";
   }
   tempImage.delete();
   throw new RuntimeException(msg);
  }
  new File(outputFile.getAbsolutePath() + ".txt").delete();
  return strB.toString();
 }
}

程序在Process process = pb.start();// 在这里直接就抛异常了,请高手指点指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值