مفتاح برامج التعرف على نص Java هو العثور على محرك OCR يمكن استدعاؤه. Tesseract-OCR هو محرك OCR ، تم تطويره بواسطة HP Labs من عام 1985 إلى عام 1995 وهو الآن على Google. تم إطلاق Tesseract-OCR 3.0 ، ودعم الصينيين. ومع ذلك ، فإن Tesseract-OCR 3.0 ليس عميلًا للواجهة الرسومية ، ولا يدعم العميل الرسومي المجاني الذي كتبه الآخرون استيراد REANDDATA الجديد 3.0. ولكن هذا يعني أن هناك الآن برنامج OCR الصيني المجاني.
الخطوات لاستخدام Tesseract-OCR3.01 في Java هي كما يلي:
1. قم بتنزيل وتثبيت Tesseract-OrCetup-3.01-1.exe (تتم إضافة التعرف الصيني فقط في الإصدار 3.0 أو أعلى)
2. يمكنك تحديد حزمة اللغة التي تريد تنزيلها في معالج التثبيت.
3. البحث وتنزيل 2 حزم مطلوبة لمعالجة رسومات Java: Jai_Imageio-1.1-alpha.jar ، swingx-1.6.1.jar
4. جافا قائمة البرامج:
فئة ImageioHelper:
استيراد java.awt.image.bufferedimage ؛ استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.util.iterator ؛ استيراد java.util.locale javax.imageio.imageWriteParam ؛ import javax.imageio.imagewriter com.sun.media.imageio.plugins.tiff.tifficwriteparam ؛ public class imageioHelper {public static file createImage (file imagefile ، string imageFormat) {file tempfile = null ؛ جرب {iterator readers = imageio.getImageReadersByFormatName (imageFormat) ؛ imagereader reader = readers.next () ؛ ImageInputStream iis = imageio.createImageInputStream (ImageFile) ؛ reader.setInput (IIS) ؛ // اقرأ التدفق metadata iiometadata streammetadata = reader.getStreamMetAdata () ؛ // قم بإعداد Writeparam tiffimagewriteparam tiffwriteparam = new TiffimageWriteParam (locale.chinese) ؛ tiffwriteparam.setCompressionMode (imageWriteParam.mode_disabled) ؛ // احصل على TIF Writer وقم بتعيين الإخراج لتقديم كتاب ITerator = imageio.getImageWritersByFormatName ("tiff") ؛ كاتب ImageWriter = writers.next () ؛ BufferedImage BI = reader.read (0) ؛ IiOimage Image = new iioimage (bi ، null ، reader.getimagemetadata (0)) ؛ tempfile = exterimageFile (ImageFile) ؛ ImageOutputStream iOS = imageio.createImageOutputStream (tempfile) ؛ constr.setoutput (iOS) ؛ Writer.Write (Treammetadata ، Image ، Tiffwriteparam) ؛ iOS.Close () ؛ الكاتب. dispose () ؛ reader.dispose () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } إرجاع tempfile ؛ } ملف ثابت خاص tempimageFile (ملف صورة) {string path = imagefile.getPath () ؛ StringBuffer Strb = New StringBuffer (path) ؛ strb.insert (path.lastindexof ('.') ، 0) ؛ إرجاع ملف جديد (strb.toString (). استبدال first ("(؟ <= //.) (// w+) $" ، "tif")) ؛ }} فئة OCR:
package com.hhp.util ؛ import 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" ؛ ] سلسلة خاصة tesspath = "c: // ملفات البرنامج (x86) // tesseract-ocr" ؛ // private string tesspath = new file ("tesseract"). getabsolutepath () ؛ السلسلة العامة التعرف على extextext (ملف صورة ، سلسلة ImageFormat) يلقي الاستثناء {file tempimage = imageioHelper.createImage (ImageFile ، ImageFormat) ؛ File OutputFile = ملف جديد (ImageFile.getParentFile () ، "الإخراج") ؛ StringBuffer strb = new StringBuffer () ؛ قائمة cmd = new ArrayList () ؛ if (os.iswindowsxp ()) {cmd.add (tesspath+"// tesseract") ؛ } آخر if (os.islinux ()) {cmd.add ("tesseract") ؛ } آخر {cmd.add (tesspath+"// tesseract") ؛ } cmd.add ("") ؛ cmd.add (outputFile.getName ()) ؛ cmd.add (lang_option) ؛ cmd.add ("chi_sim") ؛ //cmd.add("eng ") ؛ ProcessBuilder Pb = New ProcessBuilder () ؛ pb.directory (imageFile.getParentFile ()) ؛ cmd.set (1 ، tempimage.getName ()) ؛ PB.Command (CMD) ؛ pb.redirecterRorStream (true) ؛ عملية العملية = pb.start () ؛ //tesseract.exe 1.jpg 1 -l chi_sim int w = process.waitfor () ؛ // حذف ملف العمل المؤقت tempimage.delete () ؛ if (w == 0) {bufferedReader in = new BufferEdReader (new inputStreamReader (new FileInputStream (outputFile.getabsolutepath ()+". txt") ، "UTF-8")) ؛ سلسلة شارع بينما ((str = in.readline ())! = null) {strb.append (str) .append (eol) ؛ } in.close () ؛ } آخر {String msg ؛ Switch (w) {الحالة 1: msg = "الأخطاء الوصول إلى الملفات. قد تكون هناك مسافات في اسم ملف صورتك." ؛ استراحة؛ الحالة 29: msg = "لا يمكن إعادة صياغة الصورة أو منطقتها المحددة." ؛ استراحة؛ الحالة 31: msg = "تنسيق الصورة غير المدعوم." ؛ استراحة؛ الافتراضي: msg = "حدثت الأخطاء." ؛ } tempimage.delete () ؛ رمي new RunTimeException (MSG) ؛ } ملف جديد (outputfile.getabsolutepath ()+". txt"). delete () ؛ إرجاع strb.tostring () ؛ }} اختبار:
استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد com.hhp.util.ocr ؛ الطبقة العامة ocrtest {public static void main (string [] args) {string path = "c: //temp//ocrcode//4.png" ؛ System.out.println ("ORC Test BEGIN ...") ؛ حاول {string valcode = new OCR (). التعرف على extext (ملف جديد (path) ، "png") ؛ system.out.println (valcode) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } system.out.println ("ORC Test End ...") ؛ }} بعد الاختبار ، يكون معدل التعرف على النص لـ Tesseract-OCR 3.01 مرتفعًا جدًا ، ومعدل التعرف على رموز التحقق المشتركة على الموقع مرتفع للغاية.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.