package major;

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 javax.swing.JOptionPane;

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 = new File("tesseract").getAbsolutePath();
	//private String tessPath="C:\\Program Files (x86)\\Tesseract-OCR\\";
	public String recognizeText(File imageFile, String imageFormat) throws Exception {
		File tempImage=ImageIOHelper.createImage(imageFile, imageFormat);
		File outputFile = new File(imageFile.getParentFile(), "output");
		StringBuffer strB = new StringBuffer();
		List<String> cmd = new ArrayList<String>();
		if (OS.isWindowsXP()) {
			cmd.add(tessPath + "\\tesseract");
			//cmd.add(tessPath + "\\Tesseract-OCR");
		} else if (OS.isLinux()) {
			cmd.add("tesseract");
		} else {
			//cmd.add(tessPath + "\\Tesseract-OCR");
			cmd.add(tessPath + "\\tesseract");
		}
		    cmd.add("");  
	        cmd.add(outputFile.getName());  
	        cmd.add(LANG_OPTION);  
	        cmd.add("chi_sim");
//	        cmd.add("chi_tra");  
	        cmd.add("eng"); 

		ProcessBuilder pb = new ProcessBuilder();
		pb.directory(imageFile.getParentFile());

		cmd.set(1, tempImage.getName());
		pb.command(cmd);
		pb.redirectErrorStream(true);
		Process process = pb.start();
		//tesseract.exe 1.jpg 1 -l chi_sim
		int w = process.waitFor();

		// delete temp working files
		tempImage.delete();
       System.out.println(w);
		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();
	}
}
最近下载更多
huang163zi  LV1 2023年4月25日
dengjunjun  LV15 2023年3月26日
yymftanghui  LV2 2022年3月4日
Chillax  LV1 2021年12月2日
shijinbiao2006  LV3 2021年8月4日
OrangeACE  LV1 2021年3月2日
yangyang11111111  LV1 2020年10月26日
Vicent250  LV1 2020年8月6日
htx1984  LV3 2020年2月23日
houliukou  LV38 2020年2月17日
最近浏览更多
nhxzyx 6月28日
暂无贡献等级
3334004690  LV10 6月22日
huang163zi  LV1 2023年4月25日
dengjunjun  LV15 2023年3月26日
harrison123  LV2 2022年5月10日
ruishent  LV6 2022年3月9日
502595347  LV1 2022年1月13日
Chillax  LV1 2021年12月1日
mlfreeman3 2021年10月11日
暂无贡献等级
whfuai  LV14 2021年8月19日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友