Kunci program pengenalan teks Java adalah menemukan mesin OCR yang dapat dipanggil. Tesseract-OCR adalah mesin OCR, yang dikembangkan oleh HP Labs dari tahun 1985 hingga 1995 dan sekarang berada di Google. Tesseract-ocr 3.0 dirilis, mendukung orang Cina. Namun, Tesseract-OCR 3.0 bukan klien untuk antarmuka grafis, dan klien grafis freeocrice yang ditulis oleh orang lain tidak mendukung mengimpor 3.0 terlatih baru. Tetapi ini berarti bahwa sekarang ada perangkat lunak OCR Cina gratis.
Langkah-langkah untuk menggunakan tesseract-ocr3.01 di java adalah sebagai berikut:
1. Unduh dan instal Tesseract-occ-Setup-3.01-1.exe (pengakuan Cina hanya ditambahkan dalam versi 3.0 atau lebih tinggi)
2. Anda dapat memilih paket bahasa yang ingin Anda unduh di Wizard Instalasi.
3. Cari dan unduh 2 paket yang diperlukan untuk pemrosesan grafis java: jai_imageio-1.1-alpha.jar, swingx-1.6.1.jar
4. Daftar Program Java:
Kelas Imageohelper:
impor java.awt.image.bufferedimage; impor java.io.file; impor java.io.ioException; impor java.util.iterator; javax.imageio.imagewriteparam; import javax.imageio.imagewriter; import javax.imageio.metadata.iiometadata; com.sun.media.imageio.plugins.tiff.tiffimagewriteparam; kelas publik Imageohelper {public static File createImage (file imagefile, string imageformat) {file tempfile = null; coba {iterator pembaca = imageo.getImagereadersByFormatname (imageformat); Imagereader reader = pembaca.next (); ImageInputStream IIS = ImageIO.CreateMageInputStream (ImageFile); reader.setInput (IIS); // Baca aliran metadata iiometadata streammetadata = reader.getStreamMetadata (); // Siapkan WriteParam Tiffimagewriteparam tiffwriteparam = tiffimagewriteparam baru (locale.chinese); TIFFWRITEPARAM.SetCompressionMode (ImageWritEparam.Mode_Disabled); // Dapatkan TIF WRITER dan atur output untuk file iterator writers = Imageo.getImagewRitersByFormatname ("TIFF"); Imagewriter writer = writers.next (); BufferedImage Bi = Reader.Read (0); IIOImage Image = iioImage baru (bi, null, reader.getimageMetadata (0)); tempfile = tempimageFile (imagefile); ImageOutputStream iOS = ImageIO.CreateMageOutputStream (TempFile); writer.setoutput (iOS); writer.write (streammetadata, gambar, tiffwriteparam); ios.close (); writer.dispose (); reader.dispose (); } catch (ioException e) {e.printstacktrace (); } return tempfile; } private static file tempimageFile (file imagefile) {string path = imageFile.getPath (); StringBuffer strb = stringBuffer baru (path); strb.insert (path.LastIndexOf ('.'), 0); kembalikan file baru (strb.toString (). Replacefirst ("(? <= //.) (// w+) $", "tif")); }} Kelas OCR:
paket com.hhp.util; import java.io.bufferedreader; impor java.io.file; impor java.io.fileInputStream; impor java.io.inputStreamReader; impor java.util.arraylist; impor java.util.list; impor java.util.list; impor org.jdesktop.swingx.util.os; kelas publik OCR {private final string lang_option = "-l"; // huruf bahasa Inggris huruf kecil l, bukan 1 string akhir pribadi eol = system.getProperty ("line.separator"); string pribadi tesspath = "c: // file program (x86) // tesseract-ocr"; // Private String tesspath = file baru ("tesseract"). getAbsolutePath (); public string crequizeText (file imagefile, string imageformat) melempar pengecualian {file tempimage = imageohelper.createImage (imagefile, imageformat); File outputFile = file baru (imagefile.getParentFile (), "output"); StringBuffer strb = new StringBuffer (); Daftar cmd = arraylist baru (); 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.add("eng "); ProcessBuilder PB = ProcessBuilder baru (); pb.directory (imagefile.getParentFile ()); cmd.set (1, tempimage.getName ()); PB.Command (CMD); pb.redirecterrorstream (true); Proses proses = pb.start (); //tesseract.exe 1.jpg 1 -l chi_sim int w = process.waitfor (); // hapus file sementara kerja tempimage.delete (); if (w == 0) {bufferedReader in = new bufferedReader (inputStreamReader baru (fileInputStream baru (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 = "kesalahan mengakses file. Mungkin ada spasi dalam nama file gambar Anda."; merusak; Kasus 29: msg = "Tidak dapat menerima ulang gambar atau wilayah yang dipilih."; merusak; Kasus 31: msg = "Format gambar yang tidak didukung."; merusak; default: msg = "kesalahan terjadi."; } tempimage.delete (); Lempar RuntimeException baru (MSG); } file baru (outputFile.getAbsolutePath ()+". txt"). delete (); return strb.tostring (); }} Testoc:
Impor java.io.file; impor java.io.ioException; import com.hhp.util.ocr; kelas publik ocrtest {public static void main (string [] args) {string path = "c: //temp//ocrcode//4.png"; System.out.println ("orc test begin ..."); coba {string valcode = oCr baru (). pengenalanEtext (file baru (path), "png"); System.out.println (valcode); } catch (ioException e) {e.printstacktrace (); } catch (Exception e) {E.PrintStackTrace (); } System.out.println ("orc test end ..."); }} Setelah pengujian, tingkat pengenalan teks Tesseract-ROC 3.01 sangat tinggi, dan tingkat pengakuan kode verifikasi umum di situs web juga sangat tinggi.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.