Ключ к программам распознавания текста Java - найти двигатель OCR, который можно назвать. Tesseract-OCR является таким двигателем OCR, разработанным HP Labs с 1985 по 1995 год, и в настоящее время находится в Google. Выпущен Tesseract-OCR 3.0, поддерживающий китайский. Тем не менее, Tesseract-OCR 3.0 не является клиентом для графического интерфейса, и графический клиент FreeCRIC, написанный другими, не поддерживает импорт новых TreasedData 3.0. Но это означает, что теперь есть бесплатное китайское программное обеспечение OCR.
Шаги, направленные на использование Tesseract-OC3.01 в Java, заключаются в следующем:
1. Загрузите и установите Tesseract-OCR-Setup-3.01-1.exe (китайское признание добавляется только в версии 3.0 или выше)
2. Вы можете выбрать языковой пакет, который вы хотите загрузить в мастере установки.
3. Поиск и загрузка 2 пакета, необходимые для обработки графики Java: Jai_imageio-1.1-Alpha.jar, Swingx-1.6.1.jar
4. Список программ Java:
ImageioHelper Class:
Импорт java.awt.image.bufferedimage; import java.io.file; импорт java.io.ioexception; import java.util.iterator; import java.util.locale; импорт javax.imageio.iioimage; imagejavax.imageio.imageio; импорт javax.imageio.ioimage; imagejavax.imageio.imageio; import javax.imageio.imagereader; javax.imageio.imagewriteparam; import javax.imageio.imagewriter; импорт javax.imageio.metadata.iiometadata; импорт javax.imageio.stream.imageinputstream; импорт javax.imageio.mageoutputstream; com.sun.media.imageio.plugins.tiff.tiffimageWriteParam; открытый класс ImageioHelper {public Static File CreateImage (файл ImageFile, String ImageFormat) {file tempfile = null; try {iterator readers = imageio.getimagereadersbyformatname (imageformat); ImageReader Reader = readers.next (); ImageInputStream IIS = ImageIO.CreateImageInputStream (ImageFile); reader.setInput (IIS); // Читать метаданные потока iiometadata streammetadata = reader.getStreamMetadata (); // Установите WriteParam TiffimageWriteParam tiffWriteParam = new TiffimageWriteParam (locale.chinese); tiffwriteparam.setCompressionMode (imageWriteParam.mode_disabled); // Получить писатель TIF и установить вывод для подачи итераторных авторов = ImageIo.getImageWritersByformatName ("tiff"); Imagewriter writer = writers.next (); BufferedImage bi = reader.read (0); Iioimage image = new iioimage (bi, null, reader.getimagemetadata (0)); tempfile = tempimagefile (imagefile); ImageOutputStream ios = imageIo.createImageOutputStream (TempFile); writer.setOutput (iOS); writer.write (Streammetadata, Image, TiffWriteParam); ios.close (); writer.dispose (); reader.dispose (); } catch (ioException e) {e.printstackTrace (); } return tempfile; } частный статический файл empimagefile (файл imagefile) {string path = imagefile.getPath (); StringBuffer strb = new StringBuffer (path); strb.insert (path.lastindexof ('.'), 0); вернуть новый файл (strb.toString (). replyfirst ("(? <= //.) (// w+) $", "tif")); }} Класс OCR:
пакет com.hhp.util; импорт java.io.bufferedReader; Импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.inputStreamReader; импортировать java.util.arraylist; импортировать java.util.list; импортировать java.util.list; Импорт org.jdesktop.swingx.util.os; открытый класс ocr {private final String lang_option = "-l"; // Английские буквы строчные L, а не 1 частная конечная строка EOL = System.getProperty ("line.separator"); Private String tessPath = "c: // Program Files (x86) // tesseract-ocr"; // частная строка tesspath = new File ("tesseract"). getabsolutePath (); public String uncomeeTextext (файл imagefile, String ImageFormat) Throws Exception {file empimage = imageioHelper.createImage (imageFile, imageformat); File outputfile = new File (imageFile.getParentFile (), "output"); StringBuffer strb = new StringBuffer (); Список cmd = new ArrayList (); 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"); //cmd.addd("eng "); ProcessBuilder PB = New ProcessBuilder (); pb.directory (imagefile.getParentFile ()); cmd.set (1, empimage.getName ()); pb.command (cmd); PB.RediReCterRorStream (True); Процесс процесса = pb.start (); //tesseract.exe 1.jpg 1 -l chi_sim int w = process.waitfor (); // Удалить временный рабочий файл empimage.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 = "Ошибки доступа к файлам. Там могут быть места в имени файла вашего изображения."; перерыв; Случай 29: msg = "не может реконгнировать изображение или ее выбранную область"; перерыв; Случай 31: MSG = "Неподдерживаемый формат изображения"; перерыв; по умолчанию: msg = "произошли ошибки."; } empimage.delete (); бросить новое runtimeexception (msg); } new File (outputFile.getAbSolutePath ()+". TXT"). DELETE (); вернуть strb.toString (); }} Тестокра:
Импорт java.io.file; import java.io.ioexception; import com.hhp.util.ocr; public class ocrtest {public static void main (string [] args) {String path = "c: //temp//ucrode//4.png"; System.out.println ("orc test begin ..."); try {string valcode = new ocr (). ancopperizetext (new File (path), "png"); System.out.println (valcode); } catch (ioException e) {e.printstackTrace (); } catch (Exception e) {e.printstackTrace (); } System.out.println ("orc test end ..."); }} После тестирования частота распознавания текста Tesseract-OCR 3.01 очень высока, а частота распознавания общих кодов проверки на веб-сайте также очень высока.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.