用eye实现OCR,eye实现OCR,研究了下eye,实现了一
分享于 点击 47457 次 点评:179
用eye实现OCR,eye实现OCR,研究了下eye,实现了一
研究了下eye,实现了一个调用的demo
[Java]代码
import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.imageio.ImageIO;import prophecy.common.gui.RightAlignedLine;import prophecy.common.image.BWImage;import drjava.util.Tree;import eye.eye01.EyeGuiUtil;import eye.eye03.EyeData;import eye.eye03.RecognizerInfo;import eye.eye03.RecognizerInputType;import eye.eye03.RecognizerSelector;import eye.eye03.Recognizers;import eyedev._01.ImageReader;import eyedev._01.InputImage;import eyedev._01.OCRUtil;import eyedev._01.Option;import eyedev._01.RecognizedText;import eyedev._18.WithFratboySegmenter;import eyedev._21.ImageInfo;public class Main { EyeData eyeData = new EyeData(); ImageInfo imageInfo = null; ImageReader recognizer = null; Recognizers recognizers; RecognizerSelector recognizerSelector; BufferedImage image=null; RecognizedText text=null; public static void main(String[] args) { Main m = new Main(); m.main(); } public void main() { try { File f = new File("E:\\opensource\\eye-alpha-10\\examples\\donnie_small.jpg"); image = ImageIO.read(f); eyeData.setLastImagePath(f.getPath()); recognizers = eyeData.recognizers; recognizerSelector = new RecognizerSelector(recognizers); recognizerSelector = new RecognizerSelector(recognizers); recognizerSelector.selectRecognizer(eyeData .getDefaultRecognizerName()); imageInfo = eyeData.imageInfoDB.getImageInfo(f); prepareRecognizer(); recognizer.setCollectDebugInfo(true); System.out.println("Starting recognition"); recognizeInBackground(recognizer); System.out.println(text.text); } catch (IOException e) { e.printStackTrace(); } } private boolean prepareRecognizer() { if (recognizer == null) { RecognizerInfo recognizerInfo = recognizerSelector .getSelectedRecognizer(); if (recognizerInfo == null) return true; eyeData.setDefaultRecognizerName(recognizerInfo.getName()); Tree code = recognizerInfo.getCode(); System.out.println("Recognizer: " + EyeGuiUtil.shortenCode(code.toString())); recognizer = OCRUtil.makeImageReader(code); List<Option> options = new ArrayList<Option>(); recognizer.collectOptions(options); if (options.size() != 0) { RightAlignedLine line = new RightAlignedLine(); return true; } if (recognizerInfo.getInputType() == RecognizerInputType.character) { recognizer = new WithFratboySegmenter(recognizer); } } return false; } void recognizeInBackground(ImageReader recognizer) { InputImage inputImage = new InputImage(new BWImage(image)); if (imageInfo != null) inputImage.corrections = imageInfo.getCorrections(); text = recognizer.extendedReadImage(inputImage); }}
用户点评